JSON用法
JSON可以表示字符串、数值、布尔值、null
- 字符串用法:需要注意的是JSON表示的字符串必须使用双引号包围起来
"Hello,Penrose!"
JSON可以表示对象
- 语法:JSON表示的对象的属性必须用双引号包围起来,属性和值以键值对的形式表示,每一组键值对用逗号隔开。
{"name":"Penrose","age":22,"sex":"male","hobby":["跑步","健身"]}
JSON可以表示数组
- 语法:数组中可以存放任意类型的数据。数组元素之间用逗号隔开,最后一个数组元素不用加逗号。数组和对象可以结合使用,表示复杂的数据类型。
[{"name":"Penrose","age":22,"sex":"male","hobby":["跑步","健身"]},{"name":"Rose","age":25,"sex":"male","hobby":["打篮球","旅行"]}]
JSON的序列化和解析
JSON是一个全局对象,是很多主流浏览器都支持的内置对象,JSON身上有两个方法,JSON.stringify()
和JSON.parse()
JSON.stringify()
- 用法:将JavaScript对象或值转化为JSON字符串
- 延伸:序列化就是将内存中的某个对象转化为可以传输的字节序列,而序列化的就是为 了跨平台和网络传输
- JSON.stringify()会输出不包含空格或缩进的字符串
JSON.parse()
- 用法:将JSON解析为原生JavaScript值
Tips:JavaScript对象经过序列化后转化为JSON字符串,如果再将该JSON字符串解析为原生JavaScript对象,则初始对象和解析后的对象是两个完全不同的对象。
代码示例
//将js字符串转化为JSON字符串
let str = 'Hello,Penrose!';
let newStr = JSON.stringify(str);
console.log(newStr);//"Hello,Penrose!"
//将js表示的数组转化为JSON字符串
let arr = [
{
name: "Penrose",
age: 22,
sex: "male",
hobby: ["跑步", "健身"],
},
{
name: "Rose",
age: 25,
sex: "male",
hobby: ["打篮球", "旅行"],
},
];
let str = JSON.stringify(arr);
console.log(str);//[{"name":"Penrose","age":22,"sex":"male","hobby":["跑步","健身"]},{"name":"Rose","age":25,"sex":"male","hobby":["打篮球","旅行"]}]
//将JSON字符串解析为JavaScript对象
let newArr = JSON.parse(str);
console.log(newArr);//打印输出解析后的对象
//验证初始对象和解析后的对象是否相同
console.log(arr === newArr);//false
//将js对象转化为JSON字符串
let obj = {
name: "Penrose",
age: 22,
sex: "male",
hobby: ["跑步", "健身"],
};
let str = JSON.stringify(obj);
console.log(str);//{"name":"Penrose","age":22,"sex":"male","hobby":["跑步","健身"]}
let newObj = JSON.parse(str);
console.log(obj);//{name: 'Penrose', age: 22, sex: 'male', hobby: Array(2)}
//验证初始对象和解析后的对象是否相同
console.log(obj === newObj);//false