使用JSON.parse将字符串(变量)转换为对象,错误意外令牌

时间:2015-03-09 22:06:17

标签: javascript json string parsing

我在将字符串变量解析回对象时遇到问题。我已经查看了围绕此主题的所有其他问题,但没有解决我的问题。

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

1 个答案:

答案 0 :(得分:2)

正如CBroe所说,JSON.parse()可以自己解析JSON就好了,无论你想做什么都阻止它做到这一点。

它不需要你的帮助。只要让它完成它的工作并摆脱所有混乱:

var obj = JSON.parse(objStr);