• 前端--json数据的处理及相关兼容问题


      JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。

    :为了方便地处理JSON数据,JSON提供了json.js包。

    1、json结构的数据的简述

      A、在JSON中,有两种结构:对象和数组。

         (1) 对象:以“{”(左大括号)开始,“}”(右大括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:

          var person={"name":"cxh","address":"shanghai","age":22,"date":"2009-08-20"};

        (2)数组:数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。

      例如:var jsonArrlist=[{"name":"cxh","address":"shanghai","age":22,"date":"2009-08-20"},{"name":"cxh","address":"shanghai","age":22,"date":"2009-08-20"}];

      B、json的传递

      在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

        JSON字符串: var str = '{ "name":"cxh","address":"shanghai","age":22 }';

        JSON对象:    var obj= { "name":"cxh","address":"shanghai","age":22 };

    2、将json字符串转换为json结构(以上面的str为例子)

      方法一:var strObj=eval("("+str+")"); 【如果双引号不行的话,可以换成单引号:eval('('+str+')')】;

      方法二:var strObj=$.parseJSON(str)

      方法三:var strObj=JSON.parse(str);

      方法四:var strObj=str.parseJSON();  【需要json.js包,高版本的】

      :如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。

    3、将json结构的转换成json字符串(以上面的obj为例子)

      方法一:var jsonStr=JSON.stringify(obj);

      方法二:var jsonStr=obj.toJSONString();【需要json.js包,高版本的】

    4、向json结构中动态添加数据的方法

      方法一:obj.name="xiao";

      方法二:obj["name"]="xiao";  

      :如果添加数据的key是动态的话,只能用方法二来实现;例如:

    var param = {};
     for(var i=0;i<fields.length;i++){
      var field = fields[i];
      if(field.searchCondition != undefined && $('#search'+field.name).val() != ''){
       param["search."+field.name]=$('#search'+field.name).val();
      }
     }
    

      

    注意点:json数据应用中的兼容和异常(插件json.js---IE 兼容)

      1、上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低

  • 相关阅读:
    curl 设置超时时间
    allure 2
    shell 给文件每一行都添加指定字符串
    shell 文件的包含
    shell 求数组的平均值,求和,最大值,最小值
    shell 编写进度条
    shell 换行与不换行
    Linux常用命令简述--dirname与basename
    shell中脚本参数传递getopts
    Shell 中eval的用法
  • 原文地址:https://www.cnblogs.com/renxiaoren/p/5083209.html
Copyright © 2020-2023  润新知