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中正确的引号字符!嗨,天哪,这太愚蠢了,当我第一次尝试不使用额外的单引号时,字符串的键周围缺少了一些双引号。我开始寻找答案,发现我不得不在它周围加上额外的引号。好吧,你是对的,它现在确实起作用了。真是浪费我和你的时间。谢谢汉克斯,你说得对。我刚刚尝试了所有这些不同的东西,起初我的字符串是无效的,当我修复它时忘记了尝试未受破坏的版本,只是传递没有引号的字符串