在NodeJS中解析类似JSON的数据

时间:2018-02-03 19:58:04

标签: javascript json node.js

我通过NodeJS从API调用返回类似于JSON的数据。

我的回复是:

{ abc: 10,
  qwe: 5 }

如果上面的内容如下所示:

{ "abc": 10,
  "qwe": 5 }

我本可以使用JSON.parse函数,但前者不能与JSON.parse一起使用。

我有什么方法可以从该回复中获得qwe的价值?

2 个答案:

答案 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!