寻找JSON解析库

时间:2019-05-28 15:12:10

标签: json angular parsing

是否有一个Javascript JSON解析库可以解析这样的字符串?

‘{ param: “value” }’

我知道JSON.parse(‘{param:“ value”}’)不会。因为param周围没有引号,所以会引发错误:

Unexpected token p in JSON at position 2

但是我可以使用标准JSON格式创建Javascript对象,而无需在属性名称两边加上引号:

const o = { param: ‘value’ };

所以我不明白为什么无法解析“ {param:“ value”}”之类的字符串。 JSON.parse(...)不会执行此操作,但是还有其他JSON解析库吗?

我正在Angular 7中编程。

1 个答案:

答案 0 :(得分:0)

我将假设您的问题中的引号是一个错误,并且您的真实字符串看起来像这样:

{ param: "value" }

您可以使用eval进行解析:

result = eval("(" + str + ")");

(如果确实存在花哨的引号,您可能会倾向于将它们替换为replace或类似名称,但是请注意,这样做也会在 inside 字符串中替换它们。)

实时示例:

const str = '{ param: "value" }';
const result = eval("(" + str + ")");
console.log(`result.param = ${result.param}`);

警告:以这种方式使用eval允许字符串的提供者在您的代码中运行任意代码。所以:

  • 在用户B的会话中,切勿对用户A的字符串使用eval;这样做允许用户A在用户B的浏览器中运行任意代码-这是一个非常的主意。
  • 切勿在服务器上用户提供的字符串上使用eval(因为服务器基本上就是用户B :-))