Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript将字符串转换为对象_Javascript_Json_Object - Fatal编程技术网

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

使用javascript将字符串转换为对象,javascript,json,object,Javascript,Json,Object,如何将以下字符串作为对象返回 {src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200} 更新 我有一个输出JSON的php文件。我已经使用AJAX来访问js中的JSON 我已经使用了JSON.parsejson_字符串,所以现在有了我的对象。这是返回的内容: [{"name":"img","attributes":"{src:'img\/testimage.jpg', coord : {x:17, y:39

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

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

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

我已经使用了JSON.parsejson_字符串,所以现在有了我的对象。这是返回的内容:

[{"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;
}
这里是attrib返回

{src:'img/testimage.jpg', coord : {x:17, y:39}, width:200, height, 200}. 
我需要将这个字符串转换为对象

谢谢 Dave

您必须使用JSON.parsestring,但首先需要将字符串设置为有效的JSON。这意味着您必须执行以下操作:

而不是{src:'img/testimage.jpg'…它应该是{src:img/testimage.jpg…。注意src上的引号。每个键都应该用引号括起来,或者,每个值都应该准确地表示为代码,例如:字符串用引号括起来,int用引号括起来

最后一个字符串是:

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

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

您的JSON格式不正确。应为:

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

请注意高度后面的冒号,而不是逗号,正如其他答案所指出的,要使用JSON.parse,您需要一个格式正确的转义JSON字符串。请尝试以下操作:

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

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

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

... width:200, height, 200}
                     ^------- Invalid JS Object Notation
也就是说,如果出于任何原因您不能轻松更改设置,那么您应该渴望重构,最终您可以让javascript对表达式求值,只要您信任源代码

相关阅读:


在我看来,它就像一个对象。如果你把它当作JSON,那么就使用JSON。parsestring@PSL:这将不起作用,因为它不是有效的JSON。至少不是现在的内容。请提供更多上下文。如何获取字符串?@FelixKling哦,是的,可能是手动键入的…:从哪里获取此字符串?它是从服务返回的吗呃?您的JSON格式也不正确。根据JSON规范,字符串应该用双引号括起来。您好,我更新了我的问题。最初我有一个很好的有效JSON对象。我的对象中的一个对象是我提到的字符串。如果您从代码中复制/粘贴,您没有有效或可解析的字符串,因为War10ck是技术上正确的JSON对象。这仍然不正确。请参阅my。当您按照规范要求使用双引号时,内部双引号(即嵌套字符串)没有正确转义。问题是,如果字符串格式正确,当您转到var attrib=JSON_object[key]时.attributes;它应该返回一个对象。如果您得到的是字符串,那是因为它的格式不正确。我看到。数据来自mysql数据库。数据库中的属性值是{src:'img/testimage.jpg',和:'so on'。所以数据库中的字符串有问题。谢谢大家
var str, obj;
str = "{src:'img/testimage.jpg', coord:{x:17, y:39}, width:200, height:200}";
obj = new Function('return '+str)();