如何将对象字符串解析为javascript对象?

时间:2019-02-25 14:10:47

标签: javascript

我从db得到这个字符串:

{ from: 15.00, to: 16.00 },
{ from: 16.00, to: 17.00 },
{ from: 17.00, to: 18.00 },
{ from: 18.00, to: 19.00 }

这是一个字符串,json.parse在这种情况下不起作用。是否可以将此字符串转换为常规js对象?

2 个答案:

答案 0 :(得分:1)

您当前的数据库输出不可解析,因为它不被视为有效的JSON。您可以通过以下几种方法解决此问题:

  1. 将字符串作为字符串对象存储在数据库中,以便在需要解析时可以轻松实现。

  2. 使用正则表达式重新格式化您的字符串,以便可以使用JSON.parse对其进行解析。这涉及到使每个键成为一个字符串,并使每个值成为一个字符串。

  3. 您可以“轻松”地解析JSON。但是,不建议这样做,因为它会使您的javascript遭受注入攻击和其他漏洞的攻击。<​​/ p>

重新格式化您的字符串:

const str = "{ from: 15.00, to: 16.00 },{ from: 16.00, to: 17.00 },{ from: 17.00, to: 18.00 },{ from: 18.00, to: 19.00 }",
parsable = str.replace(/(\w+):\s(\d+.\d+)/g, '"$1":"$2"'),

obj = JSON.parse("[" +parsable +"]");
console.log(obj);

“松散地”使用Function构造函数解析JSON:-(不推荐)

const str = "{ from: 15.00, to: 16.00 },{ from: 16.00, to: 17.00 },{ from: 17.00, to: 18.00 },{ from: 18.00, to: 19.00 }",

obj = (Function("return [" + str + "]"))();
console.log(obj);

答案 1 :(得分:0)

它已经用JavaScript JSON语法解析,您只需要将其括在“ []”方括号中即可。您可以直接访问它,因为它已经被解析。您可以使用...测试第一个对象。

  objArray=[ 
      { from: 15.00, to: 16.00 },
      { from: 16.00, to: 17.00 },
      { from: 17.00, to: 18.00 },
      { from: 18.00, to: 19.00 } 
    ];
console.log("From : " + objArray[0].from + " To : " + objArray[0].to);