json2学习笔记


一、参考资料:

  url-1:http://baike.baidu.com/view/136475.htm

  url-2:http://www.cnblogs.com/beijia/archive/2011/10/05/json2.html

  url-3:http://wenku.baidu.com/view/202947649b6648d7c1c746fc.html

二、参考百度百科中对json的解释:  

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构

  JSON建构有两种结构:  

  1. 对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。 

  2. 数组:数组在js中是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。 

  经过对象、数组2种结构就可以组合成复杂的数据结构了。

  3. eg:

  { "people": [ 

   { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

   { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" } 

  ]}

 

------------------------------------------------

  博主经营一家发饰淘宝店,都是纯手工制作哦,开业冲钻,只为信誉!需要的亲们可以光顾一下!谢谢大家的支持!
店名:
  小鱼尼莫手工饰品店
经营:
  发饰、头花、发夹、耳环等(手工制作)
网店:
  http://shop117066935.taobao.com/

  ---------------------------------------------------------------------

继续正题... 

  

三、json2.js的使用

  下载地址:http://ishare.iask.sina.com.cn/download/explain.php?fileid=9897216 

  引入方式:在页面中引用该脚本<script type="text/javascript" src="js/json2.js"></script>

四、json2学习

  先列出两个demo代码,再进行分析

  • demo_A
<!DOCTYPE html>
<html>
<head>
    <script src="js/json2.js" type="text/javascript"></script>
</head>
<body>
    <script>
    var normalstring='[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]'; 
    var jsontext='[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]';
    var myJSONObject = {"bindings": [ 
          {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, 
          {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, 
          {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} 
       ] 
    }; 
    
    //调用eval函数转换为json对象  /*将普通字符串转化为json对象*/
    var myE = eval(normalstring); 
    //将json对象转换为字符串 
    var text = JSON.stringify(myE); 
   
    //JSON解析                  /*将json格式文本解析为json对象*/
    var myData = JSON.parse(jsontext);
    
    //对比声明的文本与转换后的json文本区别: 
  document.writeln('声明的普通格式文本normalstring = <br>'+normalstring+'<br><br>声明的json格式文本jsontext = <br>'+jsontext+'<br><br>转换后的json文本(先eval转json对象,再JSON.stringify转字符串):<br>'+text+'<br>');

    </script>
</body>
</html>

运行结果:   

声明的普通格式文本normalstring = 
[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]
声明的json格式文本jsontext = 
[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]

转换后的json文本(先eval转json对象,再JSON.stringify转字符串):
[{"persons":[{"name":"jordan","sex":"m","age":"40"},{"name":"bryant","sex":"m","age":"28"},{"name":"McGrady","sex":"m","age":"27"}]}]

 分析:

  1.代码中直接声明json数据结构var myJSONObject = {"bindings": [ 

        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, 
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, 
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} 
    ] 
};

  创建了一个对象,它只包含一个成员“bindings”,“bindings”是一个包含了3个对象的数组,而这每个对象都有"ircEvent"、"method"和"regex"3个成员,这些成员可以用“.”或subscript 操作得到。

  如:myJSONObject.bindings[0].method       // 获取"newURI"
        myJSONObject.bindings[1].deleteURI    // 获取"newURI"
   

  2.对比声明字符串normalstring和json格式文本jsontext(从代码结果中查看区别)

  3.使用eval()函数调用JavaScript的编译器把JSON文本转变成对象。因为JSON是JavaScript的一个确切的子集,编译器可以正确地解析JSON文本,然后生成一个对象结构。因而eval函数将一般字符串转换为json对象:var myE = eval(normalstring);

  4.使用JSON.stringify(),将json对象转换为字符串:var text = JSON.stringify(myE);

  5.转换后的json文本和声明的json格式文本内容是相同的。

  另外:当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全,下面调用json的parse函数对文本数据转换生成json数据结构:

    var myData = JSON.parse(jsontext);

  • Demo_B
<!DOCTYPE html>
<html>
<head>
    <script src="js/json2.js" type="text/javascript"></script>
</head>
<body>
    <script>
    //声明json对象
    var jsonObj2={persons:[
         {name:"jordan",sex:"m",age:"40"}, 
         {name:"bryant",sex:"m",age:"28"}, 
         {name:"McGrady",sex:"m",age:"27"} 
    ]};
    var persons=jsonObj2.persons; 
    var str="";
    var person={name:"yaoMing",sex:"m",age:"26"}; 
   
    //以下为json对象的操作,去掉注释可以查看操作结果 
    jsonObj2.persons.push(person);   //数组最后加一条记录 
    jsonObj2.persons.pop();          //删除最后一项 
    jsonObj2.persons.shift();        //删除第一项 
    jsonObj2.persons.unshift(person);//数组最前面加一条记录
    jsonObj2.persons.splice(0,2);    //开始位置,删除个数 ,eg:含有1234,则删除1、2
   
    //替换不删除 
    var self={name:"tom",sex:"m",age:"24"}; 
    var brother={name:"Mike",sex:"m",age:"29"}; 
    jsonObj2.persons.splice(1,0,self,brother,self);//开始位置,删除个数为0,插入对象 
   
    //替换并删除 
    jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数为1,插入对象
    
    //json对象的遍历显示
    for(var i=0;i<persons.length;i++){ 
     var cur_person=persons[i]; 
     str+=cur_person.name+"'sex is "+cur_person.sex+" and age is "+cur_person.age+"<br><br>";
    } 
    document.writeln(str); 
    
    //转换为json格式文本 
    var myjsonobj = JSON.stringify(jsonObj2); 
    document.writeln(myjsonobj);

    //json长度
    document.writeln("<br/>length= " + persons.length);
    </script>
</body>
</html>

运行结果:

tom'sex is m and age is 24
Mike'sex is m and age is 29
tom'sex is m and age is 24
Mike'sex is m and age is 29
tom'sex is m and age is 24
{"persons":[{"name":"tom","sex":"m","age":"24"},{"name":"Mike","sex":"m","age":"29"},{"name":"tom","sex":"m","age":"24"},{"name":"Mike","sex":"m","age":"29"},{"name":"tom","sex":"m","age":"24"}]} 
length= 5

分析:

  1.实例B中使用了A中JSON.stringify()方法,将json对象转换为json格式文本: var myjsonobj = JSON.stringify(jsonObj2); 

  2.演示了对json对象操作的几种方法:

  .push();         //数组最后加一条记录 
  .pop();            //删除最后一项 
  .shift();          //删除第一项 
  .unshift(person);  //数组最前面加一条记录 只要适合Javascript的方法都是可以用在JSON对象的数组中的!
  .splice(1,0,self,brother,self);   //替换不删除:开始位置,删除个数为0,插入对象 
  .splice(0,1,self,brother);        //替换并删除:开始位置,删除个数为1,插入对象

、总结

  综上,引入json2,可以看做为实现普通文本字符串normalstring、json对象jsonObj、json格式字符串之间的转换,其中常用方法有:

  eval(normalstring); 

  JSON.stringify(jsonObj);

  JSON.parse(jsontext);

店名:
  小鱼尼莫手工饰品店
经营:
  发饰、头花、发夹、耳环等(手工制作)
网店:
  http://shop117066935.taobao.com/

原文地址:https://www.cnblogs.com/qiongmiaoer/p/2844763.html