在json的使用中,根据不同的场景的需求,可以将json对象进行多次串化,得到带反斜杠的形式,例如,报文串化也会用到这样的转换,将json对象或者是json对象数组进行串化后传输。
串化后得到形为以下格式:
"{\"name\":\"张三\",\"sex\":\"男\",\"age\":18}"
或者
"[{\"name\":\"张三\",\"sex\":\"男\",\"age\":18}]"
这样的格式在js是能够很方便的处理的,这并不是非标准的json串,只是需要多一步操作而已
以下代码参考解释json对象和json对象数组的串化和反串化处理,可直接复制代码到浏览器中执行
//json对象
let data = {
name: '张三',
sex: '男',
age: 18
};
//json对象串化
let dataStr = JSON.stringify(data);
console.log("json对象串化>>>" + dataStr); //json对象串化>>>{"name":"张三","sex":"男","age":18}
//json对象反串化
let dataObj = JSON.parse(dataStr);
console.log("json字符串反串化>>>" + dataObj); //json字符串反串化>>>[object Object]
console.log("获取反串化后的json对象的属性>>>" + dataObj.name); //获取反串化后的json对象的属性>>>张三
//json对象串化-带反斜杠
let dataString = JSON.stringify(JSON.stringify(data));
console.log("json对象串化-带反斜杠>>>" + dataString); //json对象串化-带反斜杠>>>"{\"name\":\"张三\",\"sex\":\"男\",\"age\":18}"
//json反串化-带反斜杠
let dataStringObj = JSON.parse(JSON.parse(dataString));
console.log("json反串化-带反斜杠>>>" + dataStringObj); //json反串化-带反斜杠>>>[object Object]
console.log("获取反串化后的json对象的属性>>>" + dataStringObj.name); //获取反串化后的json对象的属性>>>张三
console.log("----------------------------------------");
let arr = [];
arr.push(data); //将json对象添加到数组中
//json对象数组串化
let arrStr = JSON.stringify(arr);
console.log("json对象数组串化>>>" + arrStr); //json对象数组串化>>>[{"name":"张三","sex":"男","age":18}]
//json对象数组反串化
let arrStrObj = JSON.parse(arrStr);
console.log("json对象数组反串化>>>" + arrStrObj); //json对象数组反串化>>>[object Object]
console.log("获取反串化后数组中的json对象的属性>>>" + arrStrObj[0].name); //获取反串化后数组中的json对象的属性>>>张三
//json对象数组串化-带反斜杠
let arrString = JSON.stringify(JSON.stringify(arr));
console.log("json对象数组串化-带反斜杠>>>" + arrString); //json对象数组串化-带反斜杠>>>"[{\"name\":\"张三\",\"sex\":\"男\",\"age\":18}]"
//json对象数组反串化-带反斜杠
let arrStringObj = JSON.parse(JSON.parse(arrString));
console.log("json对象数组反串化-带反斜杠>>>" + arrStringObj); //json对象数组反串化-带反斜杠>>>[object Object]
console.log("获取反串化后数组中的json对象的属性>>>" + arrStringObj[0].name); //获取反串化后数组中的json对象的属性>>>张三