JSON总结
1. 什么是JSON?
JSON(JavaScript Object Notation,JS对象标记):是一种轻量级的数据交换格式。
注:1>轻量级:是相对于xml而言的,JSON文档更小,JSON解析速度更快。
2>数据格式:指将要交换的数据先转换成一种与平台无关的数据格式,然后交给接收方来处理。
2. JSON的优点?
1>简洁和清晰的层次结构
2>易于人阅读和编写
3>易于机器解析和生成
4>有效提升网络传输效率
5>与平台无关性,可以像xml一样在多个平台之间传输数据。
3. JSON的结构?
1> "名称/值"对的集合,即对象。
4. JSON 语法?
1> 使用JSON表示一个对象
语法结构:{"属性名" : 属性值 , "属性名" : 属性值 , ......}
注意要点:(1) 属性名必须使用双引号括起来。
(2) 属性值可以取以下五种类型中的一种:String,number,boolean,null,object(一切对象类型)。
(3) 属性值如果是字符串,必须使用双引号括起来;其它类型,不需要直接使用双引号括起来。
示例:{"name" : "SunShine" , "age" : 18}
2> 使用JSON表示一个数组
语法结构:[value1,value2,value3,......]
注意要点: (1) 数组最外面用中括号括起来。
(2)value可以是简单数据类型,也可以是Object(对象),数组类型。
示例:[ {"name" : "Tim" , "age" : 20} , {"name" : "John" , "age" : 34} , {"name" : "Jason" , "age" : 10} ]
["JAVA" , "JQuery" , "CSS" , "Html5" ]
5. JSON 与 JS 对象的关系?
JSON 是 JS 对象的字符串表示法,JSON语法借鉴于JS对象的语法,但是却比JS对象的语法要求更加严格,必须遵守这个语法规范。
JSON 使用文本表示一个 JS 对象的信息,本质是一个字符串。
<1> JS对象的表示法: var obj={ name : ‘Tim‘ , age : 20} // 属性名可以用双引号也可以不用双引号。
<2> JSON对象的表示法: var json= ‘{"name" : "Tim" , "age" : 20 }‘ //属性名必须用双引号括起来,这是JSON的语法规范,必须遵守。
6. JSON 和 JS 对象互转?
1>JS对象 转 JSON 字符串:
使用 JSON.stringify() 方法:
例如:var json=JSON.stringify({name : ‘Tim‘ , age : 20}); //json的结果为:‘{"name" : "Tim" , "age":20}‘
2>JSON字符串 转 JS对象:
使用 JSON.parse() 方法:
例如:var obj=JSON.parse(‘{"name":"Tim","age":20}‘); //obj的结果为:{name:‘Tim‘,age:20}
7. Java对象转JSON字符串
1>把java对象转换成JSON字符串
使用JSONObject.fromObject();
示例:Employee emp=new Employee("1","张三","男");
JSONObject obj=JSONObject.fromObject(emp);
String jsonStr=obj.toString();
2>把java数组/集合转换成JSON字符串
使用JSONArray.fromObject();
示例:List<Employee> emps=new ArrayList<Employee>();
Employee emp;
emp=new Employee("1","张三","男");
emps.add(emp);
emp=new Employee("2","李四","男");
emps.add(emp);
JSONArray arr=JSONArray.fromObject(emps);
String jsonStr=arr.toString();
8. 常用类型
在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。
1>对象:对象在 JS 中是使用花括号包裹 {} 起来的内容,数据结构为
{key1:value1, key2:value2, ...} 的键值对结构。在面向对象的语言中,key 为对象的属性,value
为对应 的值。键名可以使用整数和字符串来表示。值的类型可以是任意类型。
2>数组:数组在 JS 中是方括号 [] 包裹起来的内容,数据结构为 ["java", "javascript", "vb", ...] 的索引结构。在 JS 中,数组是一种比较特殊的数据类型,它也可以像对象那样使 用键值对,但还是索引使用得多。同样,值的类型可以是任意类型。