javascript将字符串解析为对象或JSON

时间:2013-05-17 04:15:19

标签: javascript

我希望能够将html元素中的哈希对定义为属性,然后将其解析为要由javascript处理的对象。

示例:

<div id="test" mydata="{'xkey':'xval','ykey':'yval'}">

<script>
var mydata = JSON.parse($('#test').attr('mydata'));
console.log(mydata.xkey);
</script>

但问题是它没有转换为对象,输出未定义。

我怎样才能实现这个目标?

1 个答案:

答案 0 :(得分:2)

改为使用双引号括起键和字符串值:

mydata='{"xkey":"xval","ykey":"yval"}'

DEMO: http://jsfiddle.net/reAtQ/

如果必须保留环绕双引号,则可以对内部引号进行编码:

mydata="{&quot;xkey&quot;:&quot;xval&quot;,&quot;ykey&quot;:&quot;yval&quot;}"

DEMO: http://jsfiddle.net/reAtQ/1/

,您可以replace在解析之前使用双引号引用所有单引号:

var mydata = JSON.parse($('#test').attr('mydata').replace(/'/g, '"'));

DEMO: http://jsfiddle.net/reAtQ/2/

虽然请注意,如果任何键/值包含单引号,则会无意中替换它们。

参考: