我在将字符串变量解析回对象时遇到问题。我已经查看了围绕此主题的所有其他问题,但没有解决我的问题。
if(subMatch.match(/\{.*\}/)){ /// new Object of some sort
var objStr=subMatch.match(/\{.*\}/)[0];
//objStr= JSON.stringify(objStr); // I tried this , no difference
//objStr='"'+objStr+'"'; // Tried this way: unexpected token t
//objStr="'"+objStr+"'"; // Tried this way: unexpected token '
objStr=JSON.parse("'"+objStr+"'"); // puts out unexpected token '
这是我正在尝试的字符串:
{"type": "lawnmowing","hours": 10,"rate": 10.5,"permanent": false}
根据JSONLint,它是有效的。使用额外的报价看起来像:
'{"type": "lawnmowing","hours": 10,"rate": 10.5,"permanent": false}'
我看了这个问题,
JSON.Parse,'Uncaught SyntaxError: Unexpected token o
但是他们的变量作为一个对象开始。我的objStr有类型String,我查了一下。 我在objStr周围添加文字单引号。 因为objStr已经是一个String,这应该不是问题吧? 我还完全没有在变量
周围添加额外的引号如何正确JSON.parse一个String变量。 我可以使用它来使用eval,但我宁愿不使用它,因为它是用户输入,我必须放在一个对象中。
很抱歉再打扰一下这个话题的问题,但我还没有在其他问题中找到解决方案。
非常感谢帮助! 谢谢 Jenita
答案 0 :(得分:2)
正如CBroe所说,JSON.parse()
可以自己解析JSON就好了,无论你想做什么都阻止它做到这一点。
它不需要你的帮助。只要让它完成它的工作并摆脱所有混乱:
var obj = JSON.parse(objStr);