如何将以下字符串作为对象返回
{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}.
我需要将此字符串转换为对象。
由于 戴夫
答案 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)();
相关阅读:
答案 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字符串中的所有字符串都应正确转义双引号\"
。