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 这就没办法了

posted @   丁少华  阅读(813)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示