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