2010-12-09 21 views
1

我建立對象的列表,以放入JSON結果:迭代JSON中的複雜對象列表?

Person personA = new Person("nameA", "age"); 
Person personB = new Person("nameB", "age"); 
Person personC = new Person("nameC", "age"); 

List<Car> cars = new ArrayList<Car>(); 

cars.add(new Car("Blue", "Small", personA)); 
cars.add(new Car("Green", "Big", personB)); 
cars.add(new Car("Red", "Big", personC)); 

,並在我的JSON結果地圖,我提出:

result.put("cars", cars); 

如何在這個集合中的JavaScript迭代。我需要訪問對象的「深層」元素。

$.getJSON(window.actionName,{ 
      someId: someId}, function (ans){ 

    //I want something like this 
    foreach(car in ans.cars){ 
     car.person.age 
    } 
}); 

編輯:

result map private Map<String,List<Car>> result = 
     new HashMap<String, List<Car>>(); 

    result.put("cars", cars); 

但seemes這個列表不會被髮送到客戶端。我得到在Chrome調試這個錯誤:

ReferenceError: value is not defined 
... failed to load resource: the server responded with a status of 500 (Internal Server Error) 

答案:錯誤是因爲我是序列化有hibernante註釋對象。我創建bean對象是和系列化他們現在的序列化(和迭代工作)

+0

該狀態碼500意味着你的服務器崩潰和燒燬。與您的JavaScript無關。檢查你的shell/IDE /終端輸出是否有JAVA錯誤。 – 2010-12-09 23:53:03

+0

是的,它似乎是prbolem在地圖的序列化。它不能序列化Map >,但它可以序列化Map 。 – vale4674 2010-12-10 00:06:48

回答

2
//... 

    for(var i = 0, car; car = ans.cars[i]; ++i){ 
     alert(car.person.age); 
    } 
+0

嘗試了所有答案。我編輯了這個問題。當我發送簡單的地圖爲Map 時,它正在工作。 – vale4674 2010-12-09 23:46:20

1

有功能性的風格:

ans.cars.forEach(function(car) { 
    // do something with ‘car’ 
}); 

這是標準的ECMAScript 5正如你所標記的這個「 jQuery的」,你可能會想嘗試jQuery的版本,而不是如果你不想靠Array.forEach在那裏:

$.each(ans.cars, function(index, car) { 
    // do something with ‘car’ 
});