2016-06-17 5 views
0

(중첩) JsonArray 내부 구문 분석 JsonArray이 보인다 : 나는 그런 방법 점에서 JSON을 구문 분석하고 싶습니다내가 전화 서비스를 휴식하고 JSON 문자열을 반환 할

{ 
    "head":[ 
      "\"head1\"", 
      "head2", 
      "head3" 
    ], 
    "tail":[ 
      [ 
       "tail1", 
       "tail2",' 
       "tail3" 
      ], 
      [ 
       "tail1a", 
       "tail2a", 
       "tail3a" 
      ], 
      ....and so on till n. 
      ] 
} 

, 내가 얻을 (키, 값) 쌍. 예 : head1=tail1, head2=tail2, head1=tail1a, head2=tail2a 등.

이 방법이 있습니까? 또한 json을 사용해야한다고 제안합니다. 인터넷을 통해 3 가지 유형의 .jar 파일을 발견했으며 완전히 혼란 스럽습니다. 내가 클릭 org.json 더에 대한 읽기, 패키지를 org.json 사용하고

+1

JSON 라이브러리의 경우 해당 설명서를 읽고 테스트해야합니다. 기본적으로 Json-Simple, Gson, Jackson 등과 같은 동일한 기능 세트를 가진 많은 라이브러리가 있습니다. 매핑의 경우 : 직접해야합니다. 기본 레벨에서 JsonObject를 맵으로, JsonArray를 배열로 생각할 수 있습니다. 당신이 그들을 섞으면지도의 배열 등으로지도에지도가 있습니다. 그래서 그 땅에서 무엇인가를 시험해보고 당신이 가진 것을 보여주십시오. – Thomas

답변

0

here

예제 코드

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

public class Example { 

public static void main(String[] args) { 
    String jsonString = "{\"head\":[\"head1\",\"head2\",\"head3\"],\"tail\": [[\"tail1\",\"tail2\",\"tail3\"],[\"tail1a\",\"tail2a\",\"tail3a\"]]}"; 
    try { 
     JSONObject mainJsonObject = new JSONObject(jsonString); 
     JSONArray headJsonArray = mainJsonObject.getJSONArray("head"); 
     JSONArray tailJsonArray = mainJsonObject.getJSONArray("tail"); 
     Map<String, List<String>> keyValue = new HashMap<String, List<String>>(); 
     int index = 0; 
     for (int i = 0; i < headJsonArray.length(); i++) { 
      String head = headJsonArray.getString(i); 
      List<String> values = new ArrayList<String>(); 
      for (int j = 0; j < tailJsonArray.length(); j++) { 
       JSONArray anotherTailArray = tailJsonArray.getJSONArray(j); 
       values.add(anotherTailArray.getString(index)); 
      } 
      keyValue.put(head, values); 
      index++; 
     } 

     for (String key: keyValue.keySet()) { 
      List<String> values = keyValue.get(key); 
      for (int i = 0; i < values.size(); i++) { 
       System.out.println(key + " = " + values.get(i)); 
      } 
     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

} 
} 

출력

head1 = tail1 
head1 = tail1a 

head2 = tail2 
head2 = tail2a 

head3 = tail3 
head3 = tail3a 

이, 당신이 할 수있는 단지 예입니다 귀하의 필요에 따라 리팩토링하십시오.

+0

감사합니다. @Ravikumar – srikanth