2013-08-02 1 views
0

나는 httprequest에서 클래스로 가져올 json을 처리하려고합니다. 그러나 문제는 내가 지금이 그림의 높이를 처리 할 코드는 내 수업클래스로 JSON 처리

Boolean hasmore = tree.get("has_more").getBooleanValue(); 
    if (hasmore == true) { 
     System.out.println("Ik geraak hier"); 
     JsonNode resourceArrayNode=tree.get("photos"); 
     for(JsonNode jsonNode:resourceArrayNode){ 
      int height=jsonNode.get("height").getIntValue(); 
      result[i].setHeight(height); 
      //System.out.println(result[i].getHeight()); 
      i++; 
     } 

에 데이터를 저장하려고하면 그 충돌을 유지하는 것입니다. 문제는 내가 javaexceptionpointer 내 클래스로 설정 때 그가 충돌 것입니다 모든 것이 잘 설정되어 있기 때문에 나는 그것을 조용한 이상한 찾을

Exception in thread "main" java.lang.NullPointerException 
    at com.hp.gisware.panoramio.PanoramioResponseDeserializer.deserialize(PanoramioResponseDeserializer.java:29) 
    at com.hp.gisware.panoramio.PanoramioResponseDeserializer.deserialize(PanoramioResponseDeserializer.java:15) 
    at org.codehaus.jackson.map.ObjectReader._bindAndClose(ObjectReader.java:768) 
    at org.codehaus.jackson.map.ObjectReader.readValue(ObjectReader.java:460) 
    at com.hp.gisware.panoramio.GenericJsonPanoramioGeocoder.transmitLocation(GenericJsonPanoramioGeocoder.java:33) 
    at com.hp.gisware.panoramio.PanoramioRunner.main(PanoramioRunner.java:26) 
Disconnected from the target VM, address: '127.0.0.1:58050', transport: 'socket' 
+0

Google의 Gson API를 사용해 보셨습니까? JSON 응답을 Java 클래스로 변환하는 것은 매우 쉽습니다 ... – MikO

+0

질문에 정확한 예외 메시지를 복사/붙여 넣기하십시오. (예외 정보를 해석하는 법을 배웁니다.) –

+0

이것은 꽤 대답이 아니지만 권장 사항입니다. JSON 간단한 라이브러리. 초경량이며 모든 필수 요소가 있습니다. 참조 : http://code.google.com/p/json-simple/ – snh

답변

1

결과 배열에 쓸 때 널 포인터 예외가 발생하는 것 같습니다. 올바르게 초기화 되었습니까? 이 JSON 배열 (길이가 될 수 있음)을 (고정 된 길이로 선언 된) Java 배열에 작성하는 것은 좋지 않은 선택입니다. 컬렉션 대신 목록을 사용할 수 있습니까?

get 또는 get ("Height")가 null을 반환합니다. 당신은 아마 그것을 역 참조하기 전에 확인해야합니다 :

if(jsonNode.has("Height")) { 
    int height=jsonNode.get("height").getIntValue(); 
    result[i].setHeight(height); 
} 

은 그렇지 않으면 문제의 자바 예외 메시지를 포함하십시오.

EDIT : (스택 추적 추가) 글쎄, 그건 이상합니다. 스택 추적은 코드에서와 같이 보이지 않습니다. 최소한 메소드 이름 중 아무 것도 게시 한 코드의 것과 일치하지 않습니다. 대신 다른 스레드에서이 작업을 수행 할 수 있습니까? 다른 스레드에서 JSON 메시지를 보내고 받기 위해 코드가 트리거 될 가능성이 있습니까? 당신은 NullPointerException이 잡아가 정말

+0

내 질문에 대한 메시지를 추가했습니다. – stevedc

0

로 JSON 개체를 구문 분석에 당신을 도울 수있는 많은 라이브러리가있다 Java 클래스. 구글의 GSON https://code.google.com/p/google-gson/

잭슨 http://jackson.codehaus.org/

당신은 잭슨을 사용하는 것, 나는 생각한다. 사용하고있는 라이브러리 및 버전을 지정하고 스택 트레이스를 게시하면 더 자세한 정보를 얻을 수 있습니다. 그리고 우리도 같은 나라, 즉 네덜란드에 살고있는 것 같습니다.

+0

을 높이를 돌려 줄 경우 때문에 I 그것을 높이 디버그 결과를 얻을 것이다 그러나 클래스에 전달하지 않습니다 – stevedc

+0

@stevedc 우리에게 stacktrace 줄. –

+0

여기 국가는 어떻게 중요합니까? 잭슨은 세계의 나머지 지역에서 일하지 않는다 –

0

문제는 내가하지 그것의 클래스의 새로운 객체로 모든 객체 결과를 선언 did'nt 해결 코드 블록에서 발생되는 veryify하는 try-catch 블록을 추가하려고 할 수