json字符串不规范 怎么使用parse反序列化
json不规范 亲人两行泪
var myJsonStr = "{name:'张三', 'age':20}"; // 甚至有的key或者value是双引号包起来的 引号都不统一
JSON.parse(myJsonStr);
// 报错:myJsonStr不是一个有效的JSON字符串 (VM244:1 Uncaught SyntaxError: Expected property name or '}' in JSON at position 1)
你的妄想
var myJsonStr = "{name:'张三', 'age':20}";
JSON.stringify(myJsonStr); // 这样是不是就规范了?--回答是:不 你想多了 看看结果
// `"{name:'张三', 'age':20}"`
那要我怎么做?
当然是利用牛逼的eval
// 将不标准的json字符串转为js对象
var myJsonStr = "{name:'张三', 'age':20}";
var jsonStr = eval("("+myJsonStr +")");
// 即 通过stringify序列化js对象 然后即可得出标准的json字符串
var one = JSON.stringify(jsonStr);
// 进而 parse也可以反序列化了
JSON.parse(jsonStr );
一个小知识点
stringify默认不格式化 输出一行
JSON.stringify({name:'张三', 'age':20});
想要格式化则需要加一些参数
JSON.stringify({name:'张三', 'age':20}, null, "\t")
注意事项
像小程序 等某些平台 会不支持或禁用eval
这就没办法了