JSON 是一种数据格式,用来表示 JS 中的数据结构(不仅能在 JS 中使用,在其他环境中也可以),通常用于传输数据,例如从服务器发送数据到客户端上使用。其数据结构与 JS 相似,包括 number, string, boolean, array, object。虽然一般看起来像一个 JS 对象,但其他数据类型也存在。
JSON 是以字符串的形式存在的,文件的后缀名是 .json,返回的 MIME type 始终是 application/json。
JS 中有一个内置的 JSON 对象,它拥有两个方法,JSON.stringify() 用于把 JS 数据转化成 JSON 数据,JSON.parse() 用于把 JSON 数据转化成 JS 数据。除此之外,这个 JSON 对象没有其他任何作用,不能被调用也不能被当作构造函数来使用。
需要注意的几点:
- JSON 中只包括属性,没有方法;
- JSON 中的属性名要用 "" (双引号)括起来;
- JSON 中 '' (单引号)是不合法的;
- 错置的 : (引号)或 ,(逗号) 可能会使 JSON 不合法;
e.g. 怎用获取并使用 JSON 数据?
// 存储URL var requestURL = "xxx.json"; // 实例化一个网络请求 var request = new XMLHttpRequest(); // 指定请求方法和URL request.open("GET", requestURL); // 让 XMLHttpRequest 知道要返回的是 json 文件,并把 JSON 数据转成 JS 对象 request.responseType = "json"; // 发送请求 request.send(); // 处理数据 request.onload = function() { // 把返回的已经转为 JS 对象的 JSON 数据赋值给 myObj var myObj = request.response; // 对得到的对象进行操作 doSomething(myObj); };
在上面的代码中,request.responseType = "json"; 让 XHR 请求直接把返回的 JSON 转成了 JS 对象,但有时我们可能得到的不是一个 .json 文件,而是一个 JSON 字符串,这时我们需要使用 JSON.parse() 手动把 JSON 字符串转成 JS 对象。
// 得到的是一个 JSON 字符串 request.responseType = "text"; // 发送请求 request.send(); // 处理数据 request.onload = function() { // 得到 JSON 字符串 var myObjText = request.response; // 把 JSON 字符串转为 JS 对象 var myObj = JSON.parse(myObjText); // 对 JS 对象进行操作 doSomething(myObj); };