Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中解析这个无效的JSON字符串?_Javascript_Jquery_Json - Fatal编程技术网

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