使用带有javascript的对象的JSON数组

时间:2010-05-09 21:36:09

标签: javascript json

我有一个函数可以获得带有对象的JSON数组。在函数中,我将能够遍历数组,访问属性并使用该属性。像这样:

我将传递给函数的变量将如下所示:

[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]

function test(myJSON)
{
    // maybe parse my the JSON variable?
    // and then I want to loop through it and access my IDs and my titles
}

我有什么建议可以解决它吗?

6 个答案:

答案 0 :(得分:48)

这不是单个JSON对象。您有一组JSON对象。您需要先遍历数组然后访问每个对象。也许下面的启动示例是有用的:

var arrayOfObjects = [{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}];

for (var i = 0; i < arrayOfObjects.length; i++) {
    var object = arrayOfObjects[i];
    for (var property in object) {
        alert('item ' + i + ': ' + property + '=' + object[property]);
    }
    // If property names are known beforehand, you can also just do e.g.
    // alert(object.id + ',' + object.Title);
}

要了解有关JSON的更多信息,请查看this article

更新:如果JSON对象数组实际上是作为普通的香草字符串传入的,那么你确实需要eval()

var string = '[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]';
var arrayOfObjects = eval(string);
// ...

答案 1 :(得分:10)

这是您的dataArray

[
   {
      "id":28,
      "Title":"Sweden"
   },
   {
      "id":56,
      "Title":"USA"
   },
   {
      "id":89,
      "Title":"England"
   }
]

然后可以使用parseJson

$(jQuery.parseJSON(JSON.stringify(dataArray))).each(function() {  
    var ID = this.id;
    var TITLE = this.Title;
});

答案 2 :(得分:4)

'包含对象的JSON数组'我想你的意思是一个包含JSON的字符串?

如果是这样,您可以使用安全var myArray = JSON.parse(myJSON)方法(原生或使用JSON2)或usafe var myArray = eval("(" + myJSON + ")")。通常应避免使用eval,但如果您确定内容是安全的,那么就没有问题。

之后,您只需正常迭代数组。

for (var i = 0; i < myArray.length; i++) {
    alert(myArray[i].Title);
}

答案 3 :(得分:2)

您的问题有点不完整,但我认为您正在寻找的是一种让您的代码可以访问JSON的方法:

如果你有如上所述的JSON字符串,那么你只需要这样做

var jsonObj = eval('[{"id":28,"Title":"Sweden"}, {"id":56,"Title":"USA"}, {"id":89,"Title":"England"}]');

然后你可以使用类似jsonObj [0] .id等

的方式访问这些变量

请告诉我,如果这不是你所得到的,我会尽力帮助。

中号

答案 4 :(得分:1)

@Swapnil Godambe 如果删除了JSON.stringify,它对我有用。 那就是:

$(jQuery.parseJSON(dataArray)).each(function() {  
    var ID = this.id;
    var TITLE = this.Title;
});

答案 5 :(得分:-1)

&#13;
&#13;
class Person{
   Long id;
   String name;
   City city;
}

class City{
   Long id;
   String cityName;
}
&#13;
&#13;
&#13;