我通过NodeJS从API调用返回类似于JSON的数据。
我的回复是:
{ abc: 10,
qwe: 5 }
如果上面的内容如下所示:
{ "abc": 10,
"qwe": 5 }
我本可以使用JSON.parse函数,但前者不能与JSON.parse一起使用。
我有什么方法可以从该回复中获得qwe
的价值?
答案 0 :(得分:2)
选项1:它已经是一个对象。
您正在展示的项目已经是一个对象。它不需要解析。 JSON.parse()用于遍历字符串并将其转换为对象。只需使用对象本身。
示例:
const object = {abc:10, qwe:5};
console.log(object.abc); // > 10
console.log(object["qwe"]); // > 5
选项2:它是非JSON字符串。
在这种情况下,您可以预测模式并手动转换为可以在以后解析的JSON格式吗?
类似的东西:
const nonJson = "{abc: 10, qwe: 5 }";
let jsoned = nonJson.replace(/(:\s+)/g, "\":\"");
jsoned = jsoned.replace(/(,\s+)/g, "\",\"");
jsoned = jsoned.replace(/({\s*)/, "{\"");
jsoned = jsoned.replace(/(\s+})/, "\"}");
const object = JSON.parse(jsoned);
答案 1 :(得分:0)
有一种方法可以做到这一点,但它有点难看,你可以这样做:
var unquotedJson = '{ abc: 10, qwe: 5 }';
var object = eval('('+ unquotedJson +')');
注意:eval仅用于受信任的来源,因为它将执行JavaScript代码。
我还应该提到,未加引号的JSON实际上并不是JSON!