json学习笔记
来源:JSON 教程
一、JSON简介
- 轻量级的文本数据交换格式
二、JSON语法
- JavaScript对象表示语法子集
- 数据在名称/值对中
- 数据由逗号 , 分隔
- 使用斜杆 \ 来转义字符
- 大括号 {} 保存对象
- 无序的名称/值对集合,名称/值使用逗号 , 分隔
- 一个对象以左大括号 { 开始, 右大括号 } 结束,每个名称(“键”)后跟一个冒号 :
- 中括号 [] 保存数组,数组可以包含多个对象
- 值的有序集合,值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array),它们可以嵌套
- 一个数组以左中括号 [ 开始, 右中括号 ] 结束,值之间使用逗号 , 分隔
- JSON名称/值对
1 | key : value |
三、JSON对象
JSON 对象使用在大括号 {…} 中书写。对象可以包含多个 key/value(键/值)对
key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)
key 和 value 间使用冒号 : 分割;每个 key/value 对间使用逗号 , 分割
访问对象值(使用
for (x in json_obj)
来循环访问对象属性即key(键))- 点号 . 访问(点号后接key(键),无需双引号)
- 中括号 [ ] 访问(中括号内填key(键),需添加双引号)
删除对象属性key(键)(
delete key
),同时也会删除value(值)
四、JSON数组
访问数组:使用索引值(下标从0开始)
循环访问数组
for (i in json_obj.sites)
- for循环
删除数组元素(
delete ...
)
五、字符串和JSON对象的转换
1.JSON.parse()
该方法将数据转换为JavaScript对象,即可以解析的JSON数据
1 | JSON.parse(text, [reviver]) |
使用
AJAX
从服务器请求JSON数据并解析为JavaScript对象
1
2
3
4
5
6
7
8
9 var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
};
xmlhttp.open("GET", "/try/ajax/json_demo.txt", true);
xmlhttp.send();
- JSON不能存储Date对象,如果确实需要存储则需要将其转换为字符串再将字符串转换为Date对象
1 | var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}'; |
- 我们可以启用 JSON.parse 的第二个参数 reviver,一个转换结果的函数,对象的每个成员调用此函数
1 | var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}'; |
- JSON 不允许包含函数,可以先将函数作为字符串存储,再将字符串转换为函数,但不建议在JSON中使用函数
2.JSON.stringify()
该方法将 JavaScript 对象转换为字符串数据
1 | JSON.stringify(value, replacer, space) |
- 由于JSON不能存储Date对象,因此JSON.stringify() 会将所有日期转换为字符串
- JSON 也不允许包含函数,JSON.stringify() 会删除 JavaScript 对象的函数,包括 key 和 value;可以在执行 JSON.stringify() 函数前将函数转换为字符串来避免,但不建议在JSON中使用函数
由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象,不过必须把文本用括号括起来,这样才能避免语法错误;eval() 函数可编译并执行任何 JavaScript 代码,但这隐藏了一个潜在的安全问题
六、JSONP
Jsonp(JSON with Padding) 是 json 的一种使用模式,可以让网页从别的域名(网站)那获取资料,即跨域读取数据(同源策略)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Thee!
评论