我希望访问此数据属性中的各种数据位:
<div class="location" data="{id: 4, point: {lng: -71.413364, lat: 41.673681}, category: 'Restaurant'}">
当然,数据属性很容易在jQuery中实现。但字符串似乎是一种非标准或无效的JSON形式。我已经尝试过JSON.parse()以及分割数组的基本JS方法。从各方面来看,它似乎只是一个无效序列化的字符串。
我是否需要重新格式化数据字符串? (它不是来自我,它被其他惯例使用,我宁愿不打破,所以...)
答案 0 :(得分:6)
通常情况下我会说这很危险(实际上我现在会说),但请尝试:
var decoded; eval("decoded = " + $('div.location').attr('data'));
它是无效的JSON,因为没有引用标签。
答案 1 :(得分:1)
您收到解析错误的原因是未正确引用属性名称。 这虽然有效:
var obj = eval("(" + "{id: 4, point: {lng: -71.413364, lat: 41.673681}, category: 'Restaurant'}" + ")");
需要附上()
以避免将{}
视为块语句。
答案 2 :(得分:1)
JSON格式错误,无法解析。 It works如果您重新格式化如下:
var obj = jQuery.parseJSON('{"id": 4, "point": {"lng": -71.413364, "lat": 41.673681}, "category": "Restaurant"}');
$("#blah").text(obj.point.lng);