我正在尝试将硬编码的JSON字符串解析为可用格式,但我找不到让它工作的方法,得到'意外令牌'或只是奇怪的输出。使用的库: jQuery 。要存储的数据是:
x:10
y,10
和
x:200
y:10
它存储在名为data
的{{1}}属性中,我尝试了多种解决方案,如下所示:
使用过的功能
data-pos
数据格式
JSON.parse(data);
$.parseJSON(data);
jQuery.parseJSON(data);
使用过的功能
data-pos="{'x':10,'y':10}"
data-pos="{'x':'10','y':'10}"
data-pos="{x:'10',y:'10'}"
data-pos="{x:10,y:10}"
数据格式
alert(data);
--> output:
!!DATA AS IS!!
!!DATA AS IS!!
alert ('x: ' + data.x + ' y: ' + data.y); /* Using {x: 200, y: 10} format */
--> outputs:
x: undefined y: undefined
x: {y' <-- Yep, THIS. No typos. IDK what the hell is going on.
的资源文件:
data-pos="{'x':10,'y':10}"
data-pos="{'x':'10','y':'10}"
data-pos="{x:'10',y:'10'}"
data-pos="{x:10,y:10}"
我一直在寻找,但我能找到的只是unuccesfull或ajax为导向。我只需要将这个JSON字符串嵌入一个属性或一些内部DOM方式。我找不到解决办法。
感谢您的时间!
答案 0 :(得分:16)
在JSON中,引号必须是 double 引号,并且所有属性名称必须是字符串(例如,在引号中),因此您列出的所有数据格式都不正确。这是正确的:
data-pos='{"x":10,"y":10}'
或者如果将属性值放在双引号中很重要,因为属性的内容是HTML文本(人们往往会忘记),你可以使用"
:
data-pos="{"x":10,"y":10}"
...但只有在您必须在属性值周围使用"
而不是'
时才能这样做。
有关JSON的详细信息,包括字符串和属性名称必须是双引号的事实,请参阅the JSON website。
示例:
console.log("a's data:", $("#a").data("pos"));
console.log("b's data:", $("#b").data("pos"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="a" data-pos='{"x":10,"y":10}'></div>
<div id="b" data-pos="{"x":10,"y":10}"></div>