如何在jQuery中解析这个无效的JSON字符串?

时间:2010-05-20 15:35:34

标签: javascript jquery json

我希望访问此数据属性中的各种数据位:

<div class="location" data="{id: 4, point: {lng: -71.413364, lat: 41.673681}, category: 'Restaurant'}">

当然,数据属性很容易在jQuery中实现。但字符串似乎是一种非标准或无效的JSON形式。我已经尝试过JSON.parse()以及分割数组的基本JS方法。从各方面来看,它似乎只是一个无效序列化的字符串。

我是否需要重新格式化数据字符串? (它不是来自我,它被其他惯例使用,我宁愿不打破,所以...)

3 个答案:

答案 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);