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

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

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

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

通常我会说这很危险(事实上我现在会说),但试试:

 var decoded; eval("decoded = " + $('div.location').attr('data')); 

它是无效的JSON,因为没有引用标签。

您收到解析错误的原因是属性名称未正确引用。 这有效:

 var obj = eval("(" + "{id: 4, point: {lng: -71.413364, lat: 41.673681}, category: 'Restaurant'}" + ")"); 

需要使用enclosing ()来避免将{}作为块语句进行eval处理。

JSON格式错误,无法进行解析。 如果你像这样重新格式化它是有效的 :

 var obj = jQuery.parseJSON('{"id": 4, "point": {"lng": -71.413364, "lat": 41.673681}, "category": "Restaurant"}'); $("#blah").text(obj.point.lng);