序:
在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换,是前后端分离中,不可避免的工作内容。
例如:
// JSON字符串:
const str = '{ "name": "xiaolongxia", "sex": "man" }';
// JSON对象:
const obj = { "name": "xiaolongxia", "sex": "man" };
一、JSON字符串转换为JSON对象
要使用上面的str,必须使用下面的方法先转化为JSON对象:
// 由JSON字符串转换为JSON对象
const obj1 = eval('(' + str + ')');
或者
const obj1 = str.parseJSON();
或者
const obj1 = JSON.parse(str);
console.log(obj1.name); // xiaolongxia
console.log(obj1.sex); // man
注意: 如果obj1本来就是一个JSON对象,那么使用eval()函数转换后(哪怕是多次转换) 还是JSON对象,但是使用parseJSON()函数处理后会有问题 (抛出语法异常)。
二、JSON对象转化为JSON字符串。
例如:
// 将JSON对象转化为JSON字符
let str1 = obj.toJSONString();
或者
let str1 = JSON.stringify(obj);
console.log(str1);
// {"name":"xiaolongxia","sex":"man"}
注意: 上 面的几个方法中,除了eval()函数是js自带的之外,其他的几个方法都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个方法都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()方法,则说明您的json包版本太低。
更多查看:JSON官网