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

Convert a string (variable ) to object with JSON.parse , error unexpected token

本文关键字:对象 错误 意外 转换 parse JSON 字符串 变量 使用      更新时间:2023-09-26

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

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}'                           

我看着这个问题,

杰森。Parse,'未捕获语法错误:意外的标记 o

但是它们的变量以对象开始。我的 objStr 有字符串类型,我检查过。我在 objStr 周围添加文字单引号。因为 objStr 已经是一个字符串,这应该不是问题吧?我也完全尝试了变量周围没有额外的引号

如何正确 JSON.parse 字符串变量。我可以让它与 eval 一起工作,但我宁愿不使用它,因为它是我必须放入对象的用户输入。

很抱歉再次打扰您有关此主题的问题,但我尚未在其他问题中找到解决方案。

帮助将不胜感激!谢谢珍妮塔

正如

CBroe所说,JSON.parse()可以自行解析JSON,无论你在这里尝试做什么,都会阻止它这样做。

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

var obj = JSON.parse(objStr);