JSON
- JSON简介
JSON:JavaScript对象表示法(JavaScript Object Notation)
JSON是存储和交换文本信息的语法:
- JSON是轻量级的文本数据交换格式
- JSON独立于语言和平台
- JSON具有自我描述性,更容易理解。类似于xml,比xml更小、更快、更易解析(XML指可扩展标记语言。XML被设计用来传输和存储数据。)
js中的一个对象obj ==> c#中的一个方法
obj c#就可以获取数据
(一)类似XML
-JSON是纯文本
-具有“自我描述性”
-具有层级结构(值中存在值)
-可通过JavaScript进行解析
-数据可使用AJAX进行传输
-可被大多数编程语言使用
(二)不同于XML
-没有结束标签
-更短
-读写的速度更快
-能够使用内建的JavaScript eval()解析
-使用数组
不使用保留字
最大的不同是:
XML需要使用XML解析器来解析,JSON可以使用标准的JavaScript函数来解析。
JSON比XML更好:
XML比JSON更难解析。
JSON可以直接使用现有的JavaScript对象解析。
针对AJAX应用,JSON比XML数据加载更快,而且更简单。
使用XML
-获取XML文档
-使用XML DOM迭代循环文档
-接数据解析出来复制给变量
使用JSON
-获取JSON字符串
-JSON.Parse解析JSON字符串
- JSON语法
JSON语法是JavaScript对象表示语法的子集
- 数据在名称/值对中(数据在键值对中)
- 数据由逗号分隔
- 花括号保存对象({})
- 方括号保存数组([])
JSON数据的书写格式:
Key:value
JSON值可以是:
数字(整数或浮点数)
字符串(在双引号中)
布尔值(true or false)
数组(在方括号中)
对象(在花括号中)
Null
就是没有undefined
三、JSON对象与js对象的区别
1.JSON对象没有变量声明(JSON中没有变量的概念)
2.JSON末尾没有分号(因为这不是JavaScript语句,所有不需要分号)
{
“name”:”zhnagsan”,
“age”:23,
“sex”:”男”
}
- JSON对象在大括号{}中书写:
{key1:value1,key2:value2,......keyN:valueN}
四、JSON数组
(在方括号中书写,数组可以包含多个对象)
-Var book=[23,”hello”,true];//js中的数组
在JSON中,可以采用同样的语法表示一个数组
-[23,”hello”,true]//JSON中的数组
注意JSON数组中也没有变量和分号
-把数组和对象结合起来,可以构成更加复杂的数据集合,例如:
Json数组和对象结合的数据集合
{
“employees”:[
{ "firstName": "Bill", "lastName": "Gates" },
{ "firstName": "George", "lastName": "Bush" },
{ "firstName": "Thomas", "lastName": "Carter" }
]
}
- 解析与序列化(将JavaScript对象转化为json对象)
JSON对象有两种方法:
Stringify():将JS对象转换为JSON字符串
JSON.stringify(value[,replacer[,space]])
Value:必需,要转换的JavaScript值(通常为对象或数组)
Replacer:可选,用于转换结果的函数或数组
Space:可选,文本添加缩进、空格和换行符。
Parse()[pa:z]:将JSON字符串解析为原生的JS值
var str = JSON.stringify(obj);//将JS对象序列化为JSON字符串
console.log(str);
console.log(typeof str);//string
var jsonstr = '{"employees":[{"firstName":"Bill","lastName":"Gates"},{"firstName":"George","lastName":"Bush"},{"firstName":"Thomas","lastName":"Carter"}]}';
var obj1 = JSON.parse(jsonstr);//将JSON字符串解析为原生的JS对象
console.log(obj1);
//注意:虽然obj与obj1具有相同的属性,但它们是两个独立的、没有任何关系的对象