首页 > 解决方案 > 试图在字符串中获取 javascript 对象

问题描述

所以我试图使用一个非常奇怪的 API,调用得到一个 javascript eval 代码的响应,这个代码包含我以这种方式修剪的 javascript 对象:

var obj = resp.substring(0, resp.length-9);

从而得到这样的对象:

"{name: "Jon", code: 123, info: [{blah blah}, {blah blah}]}"

这个“对象”被识别为一个字符串,我无法提取它。

JSON 解析不起作用,因为它不是 JSON。

新对象(对象);也不会,它会输出每个字符修剪的对象。

有什么建议么?

编辑:1 所以用 <'> 替换每个 <"> 并不能解决问题。进一步的 JSON 解析结果会在位置 1 打印一个错误,在位置 1 带有意外的标记 n。

不断尝试新事物。

标签: javascript

解决方案


Eval 函数会在您的代码中调用许多严重的安全问题。相反,您可以做的是,因为您有一个字符串,只需将每个双引号(“)替换为字符串中的单引号。然后解析它。

JSON.parse 仅在 javascript 解析器未获得完美的对象级字符串时才会失败。

代码:

var objStr = "{name: "Jon", code: 123, info: [{blah blah}, {blah blah}]}";
var obj = JSON.parse(objStr.replace(/"/g, "'"));

推荐阅读