对象和Json字符串之间的相互转换
-----逆战班:加油!
** Json(JavaScript Object Notation) 是JavaScript编程语言的一个子集。同时Json也是一种字符,也是一种通用数据,前端和后端通用的数据。
JSON.parse 函数
将Json文本转换为对象。
Json.parse(text[, reviver])
参数:text 是必选项。要转换为对象的Json文本。
reviver 可选项。该参数是个替换函数。在转换中,遍历的每个节点,都将执行该函数,该函数的返回值将替代转换结果的相应节点值。
Json.stringify 函数
将对象转换为Json文本。
Json.stringify(value[, replacer[, space]])
space:可选项。格式化输出Json文本缩进的空格数量。如果不提供该参数将不会格式化输出。
参数reviver的委托类型
reviver(key, value):reviver函数的中的this是当前所遍历到的节点的父节点。当所遍历的是根节点的时候,父节点是个Object对象,根节点是该对象的一个属性,属性名是空字符串。
参数
key:当父节点是数组Object,key为数组索引,否则key为Object属性名。
value:节点值。
1.对象转Json字符串:
对象转json的过程中,若对象身上有不符合Json规则的内容,但是符合js对象自身的规则,那么,不符合Json的内容,有可能不被Json识别,或错误转换。
> 有多余的逗号会被忽略,函数被忽略,undefined被忽略,nan被转换为null,null本身被转换为null。
var obj = {
name:"admin",
age:18,
sex:"男",
show:function(){},
a:undefined,
b:NaN,
c:null,
}
console.log(obj);
console.log(typeof obj);
var str = JSON.stringify(obj);
// 因为json不识别函数,undefined,NaN,所以在强行转换之后,函数和undefined会被忽略,NaN被转成null
console.log(str);
console.log(typeof str);
2.Json字符串转对象:
var str = ‘{“name”:“admin”,“age”:16,“sex”:null}’;
console.log(typeof str);
输出:// string
console.log(str);
输出:// {"name":"admin","age":16,"sex":null}
var obj = Json.parse(str);
console.log(typeof obj);
输出:// object
console.log(obj);
输出:// Object { name: "admin", age: 16, sex: null }
console.log(obj.name);
输出:// admin
console.log(obj.age);
输出:// 16
规则: