参考:
高程三-20章
JSON 使用-菜鸟教程
javascript对象表示法(javascript object notation)是一种语法类似js的数据格式
其比xml更加方便,无需创建dom,可以很方便的被解析成有用的JavaScript对象,读写都更方便
很多编程语言都支持,尤其在JavaScript中,以前可以通过eval()获取json值, ES5后可以直接使用JSON原生对象操作json
1 语法
可以表示三种类型的值: 简单值 和 对象、数组(不能包含以下不支持的复杂数据类型)
JSON 不支持复杂的数据类型(函数、正则表达式、日期等)。日期对象默认会转化为 ISO 格式的字符串,因此信息不会完全丢失。
1.1 简单值
语法更js一样,可以是Number 、String、Blooen 、Null
但是不支持undefined
其中stirng类型的值需要注意:必须用双引号裹住, 比如:”abc”, 单引号会报错
1.2 对象
{
“name” : “abc”,
“age” : 29
}
属性名必须加双引号
1.3 数组
1.4 区别JavaScript
2 解析和序列化
2.1 eval
由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。
eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误
var txt = '{ "sites" : [' +
'{ "name":"菜鸟教程" , "url":"www.runoob.com" },' +
'{ "name":"google" , "url":"www.google.com" },' +
'{ "name":"微博" , "url":"www.weibo.com" } ]}';
var obj = eval ("(" + txt + ")");
document.getElementById("name").innerHTML=obj.sites[0].name
document.getElementById("url").innerHTML=obj.sites[0].url
2.2 JSON对象
基本大部分浏览器都已支持JSON对象,改对象专门用来做json与js之间的转换
2.2.1 JSON.parse()
解析JSON字符串并返回对应的值,可以额外传入一个转换函数,用来将生成的值和其属性, 在返回之前进行某些修改。
2.2.2 JSON.stringify()
返回与指定值对应的JSON字符串,可以通过额外的参数, 控制仅包含某些属性, 或者以自定义方法来替换某些key对应的属性值
3 JSON问题
3.1 空格
非法编码格式的空格导致解决错误
在编辑器显示跟其他空格不同,但目前没找出具体改空格的编码格式
一下文案:后面存在的空格,在解析JSON时出错
“vip_title”: “Fournisseurs”
参考:
https://juejin.cn/post/6970972103029833764