JSON是什么
JSON( JavaScript Object Notation)JavaScript对象标记法, 是一种轻量级的数据交换格式,是一种存储和交换数据的语法。
交换数据
当数据在浏览器和服务器之间进行交换的时候,这些数据只能是文本。而JSON属于文本,我们可以把任何的JavaScript对象转化为JSON,然后将JSON发送至服务器,同时也可以将从服务器接收到的JSON转换为JavaScript对象。
JSON语法
JSON语法衍生于JavaScript对象标记法语法:
1.数据在名称/值对中
2.数据由逗号分隔
3.花括号容纳对象
4.方括号容纳数组
JSON数据-名称
名称/值由字段名称构成,后跟冒号和值:
"name":"catino"
JSON名称需要双引号,而JavaScript名称不需要。JSON键必须是字符串,由双引号包围,在 JavaScript 中,键可以是字符串( 使用双引号或单引号)、数字或标识符名称:。
JSON
{ "name":"Bill Gates" }
JavaScript
{ name:"Bill Gates" }
JSON数据-值
在JSON中,值必须是:字符串、数字、对象(JSON对象)、数组、布尔、null
在JavaScript中除了上述值外,还有函数、日期、undefined
JSON VS XML
JSON 和 XML 均可用于从 web 服务器接收数据。
JSON实例
{"employees":[
{ "firstName":"Bill", "lastName":"Gates" },
{ "firstName":"Steve", "lastName":"Jobs" },
{ "firstName":"Elon", "lastName":"Musk" }
]}
XML实例
<employees>
<employee>
<firstName>Bill</firstName>
<lastName>Gates</lastName>
</employee>
<employee>
<firstName>Steve</firstName>
<lastName>Jobs</lastName>
</employee>
<employee>
<firstName>Elon</firstName>
<lastName>Musk</lastName>
</employee></employees>
同:
-
JSON 和 XML 都是“自描述的”(人类可读的)
-
JSON 和 XML 都是分级的(值中有值)
-
JSON 和 XML 都能被大量编程语言解析和使用
-
JSON 和 XML 都能被 XMLHttpRequest 读取
异:
-
JSON 不使用标签
-
JSON 更短
-
JSON 的读写速度更快
-
JSON 可使用数组
-
XML 必须使用 XML 解析器进行解析。而 JSON 可通过标准的 JavaScript 函数进行解析。
发送数据---JSON.stringify()/接收数据--- JSON.parse()
JSON 的常规用途是同 web 服务器进行数据传输。在从 web 服务器接收/发送数据时,数据永远是字符串。通过 JSON.parse() 解析数据,这些数据会成为 JavaScript 对象。 过 JSON.stringify() 把 JavaScript 对象转换为字符串。
所有主流浏览器以及最新的 ECMAScript (JavaScript) 标准均包含 JSON.parse() / JSON.stringify()函数:
解析 JSON
var obj = JSON.parse('{ "name":"Bill Gates", "age":62, "city":"Seattle"}');
对 JavaScript 对象进行字符串化
var obj = { name:"Bill Gates", age:62, city:"Seattle"};
var myJSON = JSON.stringify(obj);
存储数据
在存储数据时,数据必须是某种具体的格式,文本(可以被任何编程语言作为数据来读取和使用)永远是合法格式之一。
存储数据:
myObj = { name:"catino", age:24, country:"China" };
myJSON = JSON.stringify(myObj);
localStorage.setItem("testJSON", myJSON);
接收数据:
text = localStorage.getItem("testJSON");
obj = JSON.parse(text);
document.getElementById("demo").innerHTML = obj.name;
JSONP是什么
JSONP ( JSON with Padding)是一种无需考虑跨域问题即可传送 JSON 数据的方法。从另一个域请求文件会引起问题,由于跨域政策。从另一个域请求外部脚本没有这个问题。JSONP 利用了这个优势,并使用 script 标签替代 XMLHttpRequest 对象。