尝试解析HTML嵌入字符串J

时间:2016-05-27 10:52:38

标签: javascript jquery json

我正在尝试将硬编码的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方式。我找不到解决办法。

感谢您的时间!

1 个答案:

答案 0 :(得分:16)

在JSON中,引号必须是 double 引号,并且所有属性名称必须是字符串(例如,在引号中),因此您列出的所有数据格式都不正确。这是正确的:

data-pos='{"x":10,"y":10}'

或者如果将属性值放在双引号中很重要,因为属性的内容是HTML文本(人们往往会忘记),你可以使用&quot;

data-pos="{&quot;x&quot;:10,&quot;y&quot;: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="{&quot;x&quot;:10,&quot;y&quot;:10}"></div>