Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将字符串(变量)转换为具有JSON.parse的对象,错误为意外标记_Javascript_Json_String_Parsing - Fatal编程技术网

Javascript 将字符串(变量)转换为具有JSON.parse的对象,错误为意外标记

Javascript 将字符串(变量)转换为具有JSON.parse的对象,错误为意外标记,javascript,json,string,parsing,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 //objS

我在将字符串变量解析回一个对象时遇到问题。我已经研究了围绕这个主题的所有其他问题,但没有一个能解决我的问题

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}'                           
我看了这个问题,

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

如何正确解析一个字符串变量。 我可以让它与eval一起工作,但我不想使用它,因为我必须在对象中输入用户输入

很抱歉,我又问了一个关于这个话题的问题,但我还没有找到其他问题的解决办法

非常感谢您的帮助! 谢谢
Jenita

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

它不需要你的帮助。就让它做它的工作,摆脱所有的混乱:

var obj = JSON.parse(objStr);

objStr=JSON.parse(“”+objStr+“””);//发出意外的标记“
”–当然了,因为您已经有了字符串值,为什么还要在其周围加上额外的“”(这会使JSON无效)?只要停止这种胡说八道,你的字符串就会解析得非常好。更具体地说,它会抱怨,因为单引号甚至不是JSON中正确的引号字符!嗨,天哪,这太愚蠢了,当我第一次尝试不使用额外的单引号时,字符串的键周围缺少了一些双引号。我开始寻找答案,发现我不得不在它周围加上额外的引号。好吧,你是对的,它现在确实起作用了。真是浪费我和你的时间。谢谢汉克斯,你说得对。我刚刚尝试了所有这些不同的东西,起初我的字符串是无效的,当我修复它时忘记了尝试未受破坏的版本,只是传递没有引号的字符串