2011-04-04 28 views
0

我对jQuery的探索证明有点令人沮丧。使用JQuery解码JSON

我从服务器接收到以下Json。

{"status":"ok", 
"0":{"ID":"1","location":"location info"}, 
"1":{"ID":"2","location":"location info"}, 
"2":{"ID":"3","location":"location info"}, 
...etc 
}); 

我需要把除状态以外的所有对象放到一个数组中。 我在AS3中做到了这一点,如下所示,但似乎无法获得任何使用jQuery的地方。我想将每个对象放入数组中。

以下仅在一个对象上循环。

 $(data).each(function(index) 
    { 
    alert(data[index]["location"]) 
    }); 

请原谅我的无知。 如果我能收到任何建议,将不胜感激。

+0

你究竟想要做什么?只是得到没有状态的对象? – corroded 2011-04-04 11:06:14

+0

你能解释一下你想要做什么吗?显示一些js代码。显示一个错误,一些... – 2011-04-04 11:06:20

回答

2
var o = jQuery.parseJSON(jsonString), 
     myObjects = []; 
for (var c in o) { 
    if (c != 'status') 
     myObjects.push(o[c]); 
} 

如果您不想检查“状态”,可能会检查(typeof o[c] == 'object')

+0

你可能想'JSON.parse' – Raynos 2011-04-04 11:08:29

+0

@Raynos - 那里没有快乐。它通过JSLint但未能解析。 – Chin 2011-04-04 11:32:29

+0

好的,谢谢,如果我使用var o = data;而不是试图解析JSON - 非常感谢 – Chin 2011-04-04 11:50:15

4

如果我理解的很好,您的JSON可以改进以帮助您在这里。存储每个位置作为一个从零开始的整数索引,为什么不把它们存储在一个JSON数组的Instad:

{ 
    "status":"ok", 
    "locations":[ 
     { "ID":"1", "location":"location info"}, 
     { "ID": "2", "location": "location info" }, 
     { "ID": "2", "location": "location info" }, 
     ...etc 
    ] 
} 

然后,使用jQuery所有你需要做的是解析JSON并提取location参数,这是已经是一个阵列:

// Assume jsonString is retrieved from an AJAX call: 
var locationObj = $.parseJSON(jsonString); 
var locations = locationObj.locations; 
+0

谢谢 - 我开始思考同样的事情,因为我努力解析JSON - 它只是悄然失败。 – Chin 2011-04-04 11:28:10

+0

我认为这是一个更好的范例,因为无论如何,你基本上最终会使用'locations'作为数组。你如何编码服务器上的JSON:使用PHP的'json_encode()'? – BenM 2011-04-04 11:30:43

+0

+1更好地使用JSON – 2011-04-04 23:11:18