迭代JSON数组

时间:2012-03-11 03:51:19

标签: javascript json json.net

我已经阅读了几个如何做我想做的例子,但似乎都没有。我想迭代一个JSON数组,但它不适合我。当我查看chromes js console时,我的数据看起来像这样:

"[\r\n  {\r\n    \"EntryId\": 3,\r\n    \"Title\": \"Tiny Living For sales\",\r\n    \"Description\": \"This is a house for sale\",\r\n    \"AddressViewModel\": {\r\n      \"AddressId\": 3,\r\n      \"Street1\": null,\r\n      \"Street2\": null,\r\n      \"City\": \"Los Angeles\",\r\n      \"LocationId\": 5,\r\n      \"LocationName\": \"California\",\r\n      \"PostalCode\": null,\r\n      \"Phone\": null,\r\n      \"Latitude\": 34.052234,\r\n      \"Longitude\": -118.243685\r\n    },\r\n    \"EntryCategoryName\": \"Houses for Sale\",\r\n    \"EventStartDate\": null,\r\n    \"EventEndDate\": null\r\n  },\r\n  {\r\n    \"EntryId\": 2,\r\n    \"Title\": \"Tiny Living Workshop\",\r\n    \"Description\": \"This is a workshop\",\r\n    ...

如果我通过这样做把它变成一个对象:

var myObject = eval('(' + locations + ')');

看起来像这样(格式化):

[
{
"EntryId": 3,
"Title": "Tiny Living For sales",
"Description": "This is a house for sale",
"AddressViewModel": {
  "AddressId": 3,
  "Street1": null,
  "Street2": null,
  "City": "Los Angeles",
  "LocationId": 5,
  "LocationName": "California",
  "PostalCode": null,
  "Phone": null,
  "Latitude": 34.052234,
  "Longitude": -118.243685
},
"EntryCategoryName": "Houses for Sale",
"EventStartDate": null,
"EventEndDate": null
},
{
"EntryId": 2,
"Title": "Tiny Living Workshop",

...

但是当我尝试迭代它(原始JSON或对象)时,它给了我JSON的每个字母,而不是数组中的每个对象

for (var i = 0; i < myObject.length; i++) { console.log(myObject[i]); }

像这样:

 "
 [
 \
 r
 \

由于

2 个答案:

答案 0 :(得分:4)

您评估JSON并将结果分配给“myObject”,然后尝试迭代“位置”。毫无疑问,这不起作用: - )

答案 1 :(得分:1)

我明白了。我正在从我的控制器返回JSON,就像这样

return Json( jsonResults, "text/html");

我必须在不同的控制器上执行此操作,以防止IE提示用户保存JSON结果。 无论如何,这是在数据周围加上引号,因此它没有被正确解析。

所以我现在回来了:

return Json( jsonResults);

希望我没有IE问题(在9中测试但没有看到它)