关于JavaScript中JSON的查询
我一直在玩弄JSON,但我发现了一些我不太理解的东西,例如,我有一段代码:关于JavaScript中JSON的查询,javascript,json,Javascript,Json,我一直在玩弄JSON,但我发现了一些我不太理解的东西,例如,我有一段代码: var str = "{'name':'vvv'}"; var cjson = eval ("(" + str + ")"); alert(cjson.name); 它工作得很好,但是使用这段代码 var str = "{'name':"+'vvv'+"}"; var cjson = eval ("(" + str + ")"); alert(cjson.name);
var str = "{'name':'vvv'}";
var cjson = eval ("(" + str + ")");
alert(cjson.name);
它工作得很好,但是使用这段代码
var str = "{'name':"+'vvv'+"}";
var cjson = eval ("(" + str + ")");
alert(cjson.name);
没有,我得到了以下firebug错误:ReferenceError:vvv未定义
为什么它不能与第二种方式一起工作,str在这两种情况下都不是有效的字符串吗?它是一个字符串,是的。但不是相同的字符串,也不是有效的JSON
var str = "{'name':" + 'vvv' + "}";
同:
var str = "{'name':" + "vvv" + "}";
var str = "{'name':vvv}";
这与:
var str = "{'name':" + "vvv" + "}";
var str = "{'name':vvv}";
当您尝试评估时,就好像您声明:
var cjson = { 'name': vvv };
没有名为
vvv
的变量,是字符串。但不是相同的字符串,也不是有效的JSON
var str = "{'name':" + 'vvv' + "}";
同:
var str = "{'name':" + "vvv" + "}";
var str = "{'name':vvv}";
这与:
var str = "{'name':" + "vvv" + "}";
var str = "{'name':vvv}";
当您尝试评估时,就好像您声明:
var cjson = { 'name': vvv };
当您执行
var str=“{'name':“+'vvv'+”}”时,没有名为vvv的变量
,生成的字符串是“{'name':vvv}”
,其中vvv
不是字符串文本。因此,eval将尝试在执行范围内解析它,因为在执行范围内找不到它,所以当您执行var str=“{'name':“+'vvv'+“}”时,它会抛出一个错误
,生成的字符串是“{'name':vvv}”
,其中vvv
不是字符串文本。因此,eval将尝试在执行范围内解析它,因为在那里找不到它,它会抛出一个错误,该错误不是有效的JSON,需要双引号。您需要在“vvv”周围添加引号,在字符串连接后,您会得到var str=“{name':vvv}”;您应该有类似var str=“{'name':”+“'vvv'”+“}”的内容;这不是有效的JSON,需要双引号。您需要在“vvv”周围添加引号,在字符串连接后,您会得到var str=“{name':vvv}”;您应该有类似var str=“{'name':”+“'vvv'”+“}”的内容;对于记录,有效的JSON应该是var str='{“name”:“vvv”}'对于记录,有效的JSON应该是var str='{“name”:“vvv”}'代码>