使用javascript将字符串转换为对象

时间:2013-12-09 22:09:19

标签: javascript json object

如何将以下字符串作为对象返回

{src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200} 

更新

我有一个输出JSON的php文件。我已经使用AJAX来访问我的js中的JSON。

我已经使用了JSON.parse(json_string)所以我现在有了我的对象。这是返回的:

[{"name":"img","attributes":"{src:'img\/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200}","comments":"image element with attributes"},{"name":"triangle","attributes":"{bgColor : '#FF0000', coord : {x:500, y:300}, width:50, height, 50}","comments":"triangle"}] 

我现在可以使用for循环遍历这些位。

for(key in json_object) {
 var name_type = json_object[key].name;
 var attrib = json_object[key].attributes;
}

此处归属于

{src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200}. 

我需要将此字符串转换为对象。

由于 戴夫

4 个答案:

答案 0 :(得分:1)

您必须使用JSON.parse(string),但首先您需要使字符串成为有效的JSON。这意味着您必须执行以下操作:

而不是{src:'img/testimage.jpg'...它应该是{"src":"img/testimage.jpg"...(请注意src上的引号)。每个应该包含在引号""''中,并且每个应该完全如何表示为代码,例如: String将用引号括起来,而int则不会;

所以你的最终字符串是:

编辑:正如War10ck所说,字符串应该被转义。

"{\"src\":\"img/testimage.jpg\", \"coord\":{\"x\":17, \"y\":39}, \"width\":200, \"height\":200}"

答案 1 :(得分:1)

正如许多人所指出的那样,你应该首先将这些数据存储为有效的 JSON ,而另一篇文章指出你的对象甚至不是一个有效的javascript object-literal。如何选择序列化数据最终是您的选择,但在编码时必须至少遵守一些规则,否则您希望如何解析它?

... width:200, height, 200}
                     ^------- Invalid JS Object Notation

那就是说,如果由于某种原因你不能轻易改变你的设置(你应该渴望最终重构)你可以让javascript评估表达,只要你信任源

var str, obj;
str = "{src:'img/testimage.jpg', coord:{x:17, y:39}, width:200, height:200}";
obj = new Function('return '+str)();

相关阅读:

Why is using the JavaScript eval function a bad idea?

答案 2 :(得分:0)

您的JSON格式不正确。应该是:

{src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height: 200} 

(注意高度后的COLON,而不是COMMA)

答案 3 :(得分:0)

正如其他答案所指出的那样,您需要使用格式正确的转义JSON字符串才能使用JSON.parse()。试试这个:

"{\"src\":\"img/testimage.jpg\", \"coord\":{\"x\":17, \"y\":39}, \"width\":200, \"height\":200}"

根据JSON Spec,所有字符串必须用双引号"括起来。 JSON字符串中的所有字符串都应正确转义双引号\"