2012-01-23 7 views
0

json.org 라이브러리를 사용하여 json을 구문 분석합니다. 하지만 메시지 수가 "null"필드, JSONObject (하나의 메시지 만있는 경우) 또는 JSONArray (여러 개의 메시지가있는 경우)로 나올 수있는 "메시지"라는 필드가 있습니다. 나는 그것을 올바르게 만들지 않으면 오류를 반환하므로 올바른 객체 유형을 사용하여 읽어야하기 때문에 이것을 처리하는 데 약간의 문제가 있습니다. 오, 그리고 자바 야.Java에서 JSONObject 또는 JSONArray가 될 수있는 json 필드를 구문 분석하십시오.

아무도 도와 줄 수 있습니까? 나는 이것을 대우하는 "standart"방법이있을 것이라고 확신합니다!

답변

0

당신은 JSONTokener 사용하는 가정 :

JSONTokener jk = ...; // whatever you're currently doing. 

// Probably a loop here around the below... 

Object o = jk.nextValue(); 
if(o instanceof JSONObject){ 
    JSONObject jo = (JSONObject)o; 
    // Do something with jo. 
}else if(o instanceof JSONArray){ 
    JSONArray ja = (JSONArray)o; 
    // Do something with ja. 
}else{ 
    // Is null or another type. (Maybe do something?) 
} 

nextValue()에서 반환 할 수있는 모든 다른 유형의 http://www.json.org/javadoc/org/json/JSONTokener.html#nextValue%28%29를 참조하십시오.

1

난 그냥과 같이 간단한 유틸리티 방법을 만들 것입니다 :

private void processMessages(Object messages) { 
    JSONArray jsonArr; 
    if (messages instanceof JSONObject) { 
     jsonArr = new JSONArray(); 
     jsonArr.put(messages); 
    } else if (messages instanceof JSONArray) { 
     jsonArr = messages; 
    } 

    // Process all the JSONObjects in the same way 
    for (final JSONObject obj : jsonArr) { 

    } 
} 

을 다음 코드 내에서 :

if (jsonObj.has("messages")) { 
    processMessages(jsonObj.get("messages")); 
} 
+0

다양한 솔루션을! 정말로 그것을 좋아했다! – Filipe

+0

다행스럽게도 :-) – jabclab

관련 문제