我从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对象?
答案 0 :(得分:1)
您当前的数据库输出不可解析,因为它不被视为有效的JSON。您可以通过以下几种方法解决此问题:
将字符串作为字符串对象存储在数据库中,以便在需要解析时可以轻松实现。
使用正则表达式重新格式化您的字符串,以便可以使用JSON.parse
对其进行解析。这涉及到使每个键成为一个字符串,并使每个值成为一个字符串。
您可以“轻松”地解析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);