2013-02-14 35 views
2

我通过jQuery $.getJSON(url, function(data) { ... 得到一个JSON文件,并希望与解析,要么JSON.parse()来不工作jQuery的数据对象

var obj = JSON.parse(data); 

var obj = jQuery.parseJSON(data); 

第一行给我“语法错误”(使用IE8,应支持JSON.parse),第二个给我“'中心'为空或不是对象”。

这是我使用的有效的JSON文件:

{ 
"center":{"lat":"51.99637","lon":"13.07520"}, 
"locations": 
[ 
    { "name":"a string","info":"another string" }, 
    ... some more here ... 
] 
} 

我不是太熟悉JavaScript。我究竟做错了什么?

如果我使用一个简单的JSON数组(仅仅是位置的内容),我可以用$.each得到有效的数据。 在使用JSON.parse之前,我是否必须对数据做些什么?

回答

5

问题是该函数的名称有点误导:它不会给你JSON,但已经解析的对象。它的作用是获取一些JSON并为你解析它。

data是一个普通的javascript对象,你不需要解析它。

+0

也许应该是'JSON.parseFromString' – 2013-02-14 15:39:07

+0

我建议重命名功能'$ .fetchSomeJSONAndParseItForMePlease = $ .getJSON;' – 2013-02-14 15:40:32

+0

考虑当有人称某个JavaScript对象为“JSON”时,人们看起来有多愤怒,你会想更多的人会将jQuery方法名称改为'$ .getJavaScriptDataStructure' – 2013-02-14 15:42:43

2

$ .getJSON会为你解析数据 - 你不需要在事后手动解析它。

0

你可以尝试像

var object = {} 
object.text = "Hello World!" 

var json = JSON.stringify(object) 
alert(json) 

var object = JSON && JSON.parse(json) || $.parseJSON(json) 
alert(object.text) 

Jsfiddle link