2013-05-09 104 views
0

我有以下代码:JavaScript字符串赋值给键值字符串

var inputString ={"Key1":"Planes","Key2":"Trains","Key3":"Cars","Key4":"Caoch","Key5":"Cycles","Key6":"Bikes"} 

var value = inputString ["Key3"]; 
alert(value); 

上面的代码工作正常,请注意变量inputString是大括号之间布置的作业。我是一个js新手,但我认为这是一个表示某种对象的约定。这种字符串分配对我来说看起来很奇怪,但它的工作原理如上所述。

我的问题是,当我尝试分配变量inputString到字符串中,如下所示:

var inputString2 ='{"Key1":"Planes","Key2":"Trains","Key3":"Cars","Key4":"Caoch","Key5":"Cycles","Key6":"Bikes"}' 

var value = inputString2 ["Key3"]; 
alert(value); 

上面的代码返回undefined,为什么呢?

我敢肯定,对JavaScript有深刻理解的人可以向我解释这一点。

谢谢

+0

你为什么要使用对象方法用绳子? – 2013-05-09 15:52:44

+0

你需要在该字符串上使用'eval' .... j/k(不这样做)查看json.js http://www.json.org/js.html – 2013-05-09 15:54:03

+0

这个“某种对象“实际上称为['object literal'](https://developer.mozilla.org/en/docs/JavaScript/Guide/Values,_variables,_and_literals#Object_literals),第二个仅仅是一个”字符串文字“最有可能的字符串转储的[JSON](http://www.json.org/)对象 – Aprillion 2013-05-09 16:01:21

回答

5

那是因为它是不反对它只是一个字符串。

var inputString2 ='{"Key1":"Planes","Key2":"Trains","Key3":"Cars","Key4":"Caoch","Key5":"Cycles","Key6":"Bikes"}' 

你需要删除你的json引号。它应该是这样的。

var inputString2 ={"Key1":"Planes","Key2":"Trains","Key3":"Cars","Key4":"Caoch","Key5":"Cycles","Key6":"Bikes"} 

如果你把它作为字符串。使用JSON.parse

var convertedJson = JSON.parse(inputString2); 
var value = convertedJson ["Key3"]; 
alert(value); 

See JSON.parse

+0

您好PSL,有没有办法将inputString2从一个字符串变成一个对象,所以它可以工作? – Karthik 2013-05-09 15:53:03

+0

使用JSON.parse(inputString2) – PSL 2013-05-09 15:53:50

+1

不要用花括号括住引号。 – 2013-05-09 15:53:51