JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

JSON建构于两种结构:

  • “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
  • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON具有以下这些形式:

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

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

值(value)可以是双引号括起来的字符串(string)、数值(number)、truefalsenull、对象(object)或者数组(array)。这些结构可以嵌套。

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

字符串(string)与C或者Java的字符串非常相似。

数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

空白可以加入到任何符号之间。 以下描述了完整的语言。

 
 
==========================================================================
 
  1. <script type="text/javascript" src="json2.js"></script>   
  2. <script>   
  3. //直接声明json数据结构   
  4. var myJSONObject = {"bindings": [   
  5.         {"ircEvent""PRIVMSG""method""newURI""regex""^http://.*"},   
  6.         {"ircEvent""PRIVMSG""method""deleteURI""regex""^delete.*"},   
  7.         {"ircEvent""PRIVMSG""method""randomURI""regex""^random.*"}   
  8.     ]   
  9. };   
  10. //声明字符串,可对比一下json文本与我们正常文本的区别   
  11. var normalstring='[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]';   
  12. var jsontext='[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]';   
  13.  
  14. //调用eval函数转换为json对象,   
  15. var myE = eval(normalstring);   
  16. document.writeln(myE+'<br><br>');   
  17. //将json对象转换为字符串   
  18. var text = JSON.stringify(myE);   
  19. //对比转换后的json文本与声明的文本区别   
  20. document.writeln('转换后的json文本:'+text+'<br><br>声明的json格式文本'+jsontext+'<br><br>声明的普通格式文本'+normalstring+'<br><br>');   
  21.  
  22. //当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全,下面调用json的parse函数对文本数据转换生成json数据结构   
  23. var myData = JSON.parse(jsontext);   
  24.  
  25. document.writeln(myData+'<br><br>');   
  26.  
  27. //下面是对json对象的增删查改操作   
  28.  
  29. //声明json对象   
  30.  
  31. var jsonObj2={persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]};   
  32.  
  33. var persons=jsonObj2.persons;   
  34. var str="";   
  35.  
  36. var person={name:"yaoMing",sex:"m",age:"26"};   
  37. //以下为json对象的操作,去掉注释可以查看操作结果   
  38. //jsonObj2.persons.push(person);//数组最后加一条记录   
  39. //jsonObj2.persons.pop();//删除最后一项   
  40. //jsonObj2.persons.shift();//删除第一项   
  41. jsonObj2.persons.unshift(person);//数组最前面加一条记录 只要适合Javascript的方法都是可以用在JSON对象的数组中的!所以还有另外的方法splice( )进行crud操作! //删除   
  42. //jsonObj2.persons.splice(0,2);//开始位置,删除个数   
  43. //替换不删除   
  44. var self={name:"tom",sex:"m",age:"24"};   
  45. var brother={name:"Mike",sex:"m",age:"29"};   
  46. jsonObj2.persons.splice(1,0,self,brother,self);//开始位置,删除个数,插入对象   
  47. //替换并删除   
  48. //jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数,插入对象   
  49.  
  50. 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>"; }   
  51. document.writeln(str);   
  52. //转换为json文本   
  53. var myjsonobj = JSON.stringify(jsonObj2);   
  54. document.writeln(myjsonobj);   
  55. </script>  

资料来自互联网

posted @ 2010-04-05 17:54  liangzi.net  阅读(185)  评论(0编辑  收藏  举报