我希望能够将html元素中的哈希对定义为属性,然后将其解析为要由javascript处理的对象。
示例:
<div id="test" mydata="{'xkey':'xval','ykey':'yval'}">
<script>
var mydata = JSON.parse($('#test').attr('mydata'));
console.log(mydata.xkey);
</script>
但问题是它没有转换为对象,输出未定义。
我怎样才能实现这个目标?
答案 0 :(得分:2)
改为使用双引号括起键和字符串值:
mydata='{"xkey":"xval","ykey":"yval"}'
DEMO: http://jsfiddle.net/reAtQ/
如果必须保留环绕双引号,则可以对内部引号进行编码:
mydata="{"xkey":"xval","ykey":"yval"}"
DEMO: http://jsfiddle.net/reAtQ/1/
或,您可以replace
在解析之前使用双引号引用所有单引号:
var mydata = JSON.parse($('#test').attr('mydata').replace(/'/g, '"'));
DEMO: http://jsfiddle.net/reAtQ/2/
虽然请注意,如果任何键/值包含单引号,则会无意中替换它们。
参考: