我在将字符串变量解析回对象时遇到问题。我已经查看了围绕此主题的所有其他问题,但没有一个解决我的问题。
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 字符串变量。 我可以让它与 eval 一起工作,但我不想使用它,因为我必须将用户输入放入对象中。
很抱歉再次就这个主题的问题打扰您,但我在其他问题中还没有找到解决方案。
非常感谢您的帮助! 谢谢 杰尼塔
最佳答案
正如 CBroe 所说,JSON.parse()
可以自行很好地解析 JSON,无论您在这里尝试做什么都会阻止它这样做。
它不需要你的帮助。只要让它完成它的工作并摆脱所有困惑即可:
var obj = JSON.parse(objStr);
关于javascript - 使用 JSON.parse 将字符串(变量)转换为对象,错误意外标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28952621/