Javascript 如何在jQuery中解析这个无效的JSON字符串?
我希望访问此数据属性中的各种数据位:Javascript 如何在jQuery中解析这个无效的JSON字符串?,javascript,jquery,json,Javascript,Jquery,Json,我希望访问此数据属性中的各种数据位: <div class="location" data="{id: 4, point: {lng: -71.413364, lat: 41.673681}, category: 'Restaurant'}"> 当然,数据属性在jQuery中很容易访问。但字符串似乎是JSON的非标准或无效形式。我尝试了JSON.parse()和一种基本的JS方法来拆分数组。所有人都认为它只是一个无效序列化的字符串 我需要重新格式化数据字符串吗?(它不是我自己写
<div class="location" data="{id: 4, point: {lng: -71.413364, lat: 41.673681}, category: 'Restaurant'}">
当然,数据属性在jQuery中很容易访问。但字符串似乎是JSON的非标准或无效形式。我尝试了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'}" + ")");
为了避免eval将
{}
视为块语句,需要使用封闭的()
。JSON格式错误,无法进行解析。如果您这样重新格式化:
var obj = jQuery.parseJSON('{"id": 4, "point": {"lng": -71.413364, "lat": 41.673681}, "category": "Restaurant"}');
$("#blah").text(obj.point.lng);