2010-12-09 7 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); 

어떻게 자바 스크립트에서이 컬렉션을 반복 할 수 있습니다. 나는 객체의 "깊은"요소에 접근 할 필요가있다.

$.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. 나는 크롬 디버거에서이 오류를 얻을 :

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

답변 : 제가 주석을 hibernante했다 객체를 직렬화 때문에 오류가 있었다. 나는 콩이 그 개체를 생성하고이를 직렬화 지금 직렬화 (및 반복이 작동은)

+0

있다. 자바 스크립트와 아무 관련이 없습니다. 셸/IDE/터미널 출력에서 ​​JAVA 오류를 확인하십시오. –

+0

예, 그것은 prbolem이지도의 직렬화에있는 것처럼 보입니다. 그것은 Map >을 직렬화 할 수는 없지만 Map 를 직렬화 할 수 있습니다. – vale4674

답변

2
//... 

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

모든 답을 시도했습니다. 나는 그 질문을 편집했다. Map 과 같이 간단한지도를 보낼 때 작동하고있었습니다. – vale4674

+0

@ vale4674 나는 당신이 서버에서 무엇을하고 있는지 모른다. 그러나 에러는 서버 코드 (아마 500 에러를 일으킨다)가 아니라 자바 스크립트이다. 귀하의 직렬화 메커니즘을 조사해 볼 것입니다, 아마도 그들은 hashmap을 serialize 할 수 없습니다? –

+0

하지만 내가 이것을 가지고있을 때 : private Map result = new HashMap (); 문자열을 키와 값으로 넣을 때 직렬화가 잘되었습니다. 하지만 지금은 그렇지 않습니다. Collection에 문제가 있습니까? – vale4674

1

기능 스타일있다 "

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

이이 태그했듯이 표준 인 ECMAScript 5입니다 JQuery와 "당신은 당신이 거기있을 Array.forEach에 의존하지 않으려는 대신 경우 jQuery를 버전을 시도 할 수 있습니다 : 상태 코드 500은 서버가 추락하고 불을 의미

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

모든 답을 시도했습니다. 나는 그 질문을 편집했다. Map 과 같이 간단한지도를 보낼 때 작동하고있었습니다. – vale4674

관련 문제