2014-04-04 5 views
-9

다음과 같이하면 blog 어떻게 이런 JSON 데이터를 구문 분석 할 수 있습니까? 누구나 JSON 데이터를 검색 할 때 링크/튜토리얼을 제공 할 수 있습니까? 여기 자바에서 다차원 JSON을 파싱

{ 
     "batters": 
      { 
       "batter": 
        [ 
         { "id": "1001", "type": "Regular" }, 
         { "id": "1002", "type": "Chocolate" }, 
         { "id": "1003", "type": "Blueberry" }, 
         { "id": "1004", "type": "Devil's Food" } 
        ], 
       "batter2": 
        [ 
         { "id": "6", "type": "POGI" }, 
         { "id": "66", "type": "PWEPWE" }, 
         { "id": "666", "type": "SABON" }, 
         { "id": "6666", "type": "SABAW" } 
        ] 
      }, 
     "topping": 
      [ 
       { "id": "5001", "type": "None" }, 
       { "id": "5002", "type": "Glazed" }, 
       { "id": "5005", "type": "Sugar" }, 
       { "id": "5007", "type": "Powdered Sugar" }, 
       { "id": "5006", "type": "Chocolate with Sprinkles" }, 
       { "id": "5003", "type": "Chocolate" }, 
       { "id": "5004", "type": "Maple" } 
      ] 
    } 

내가이 데이터를 검색에 사용했습니다 내 파서하지만 난 타자 태그를 얻고 내부 타자/batter2의 태그 아마도 ID와 형식이 될 수 있습니다에 점점 문제가 있어요 여러 .. 여기
/* ---------------------------------------------------------------------------------------------------------------------------- * 
    Custom 
* ---------------------------------------------------------------------------------------------------------------------------- */ 

    @SuppressWarnings("unchecked") 
    public Map<String, ArrayList<List<String>>> JsonToMap(String JsonObj) { 
     Map<String, ArrayList<List<String>>> TblMap = new HashMap<String, ArrayList<List<String>>>(); 
     try { 
      List<List<Object>> JObj = (List<List<Object>>) getObjectFromJson(JsonObj); 
      for (int x = 0; x < JObj.size(); x++) { 

       List<Object> Tbl = new ArrayList<Object>(); 
       String MapKey = JObj.get(x).get(0).toString(); 
       Tbl = (List<Object>) JObj.get(x).get(1); 
       TblMap.put(MapKey, new ArrayList<List<String>>()); 
       for (Object obj : Tbl) { 
        TblMap.get(MapKey).add((List<String>) obj); 
        } 
      } 
     } catch (JSONException e) { TblMap = null; } 
     return TblMap; 
    } 

    @SuppressWarnings("unchecked") 
    public Map<String, ArrayList<List<Object>>> JsonToMapObject(String JsonObj) { 
     Map<String, ArrayList<List<Object>>> TblMap = new HashMap<String, ArrayList<List<Object>>>(); 
     try { 
      List<List<Object>> JObj = (List<List<Object>>) getObjectFromJson(JsonObj); 
      for (int x = 0; x < JObj.size(); x++) { 

       List<Object> Tbl = new ArrayList<Object>(); 
       String MapKey = JObj.get(x).get(0).toString(); 
       Tbl = (List<Object>) JObj.get(x).get(1); 
       TblMap.put(MapKey, new ArrayList<List<Object>>()); 
       for (Object obj : Tbl) { 
        TblMap.get(MapKey).add((List<Object>) obj); 
        } 
      } 
     } catch (JSONException e) { TblMap = null; } 
     return TblMap; 
    } 


    public String GetValue(Map<String, ArrayList<List<String>>> TableCollection, String TableName, Integer RowNumber, Integer ColumnNumber) { 
     return TableCollection.get(TableName).get(RowNumber).get(ColumnNumber).toString(); //TableCollection.get(TableName).get(RowNumber).get(ColumnNumber).toString(); 
    } 

    public String MapToJson(Map TMap) { 
     JSONObject z = new JSONObject(TMap); 
     return z.toString(); 
    } 

    /* ---------------------------------------------------------------------------------------------------------------------------- * 
    JSON Natives 
* ---------------------------------------------------------------------------------------------------------------------------- */ 

    public String getJsonRepresentation(Object value) throws JSONException { 
     if (value == null || value.equals(null)) { return "null"; } 
     if (value instanceof Number) { return JSONObject.numberToString((Number) value); } 
     if (value instanceof Boolean) { return value.toString(); } 
     if (value.getClass().isArray()) { 
      StringBuilder sb = new StringBuilder(); 
      sb.append("["); 
      String separator = ""; 
      for (Object o: (Object[]) value) { 
       sb.append(separator).append(getJsonRepresentation(o)); 
       separator = ","; 
      } 
      sb.append("]"); 
      return sb.toString(); 
     } 
     if (value instanceof String) { return value.toString(); } 
     return JSONObject.quote(value.toString()); 
    } 

    public Object getObjectFromJson(String jsonString) throws JSONException { 
     final Object value = (new JSONTokener(jsonString)).nextValue(); 
     if (value == null || value.equals(null)) { return null; } 
     else if ((value instanceof String) || (value instanceof Number) || (value instanceof Boolean)) { return value; } 
     else if (value instanceof JSONArray) { return getListFromJsonArray((JSONArray)value); } 
     else if (value instanceof JSONObject) { return getListFromJsonObject((JSONObject)value); } 
     throw new JSONException("Invalid JSON string."); 
    } 

    public List<Object> getListFromJsonArray(JSONArray jArray) throws JSONException { 
     List<Object> returnList = new ArrayList<Object>(); 
     for (int i = 0; i < jArray.length(); i++) { returnList.add(convertJsonItem(jArray.get(i))); } 
     return returnList; 
    } 

    @SuppressWarnings("unchecked") 
    public List<Object> getListFromJsonObject(JSONObject jObject) throws JSONException { 
     List<Object> returnList = new ArrayList<Object>(); 
     Iterator<String> keys = jObject.keys(); 
     List<String> keysList = new ArrayList<String>(); 
     while (keys.hasNext()) { keysList.add(keys.next()); } 
     Collections.sort(keysList); 
     for (String key : keysList) { 
      List<Object> nestedList = new ArrayList<Object>(); 
      nestedList.add(key); 
      nestedList.add(convertJsonItem(jObject.get(key))); 
      returnList.add(nestedList); 
     } 
     return returnList; 
    } 

    public Object convertJsonItem(Object o) throws JSONException { 
     if (o == null) { return "null"; } 
     if (o instanceof JSONObject) { return getListFromJsonObject((JSONObject) o); } 
     if (o instanceof JSONArray) { return getListFromJsonArray((JSONArray) o); } 
     if (o.equals(Boolean.FALSE) || (o instanceof String && ((String) o).equalsIgnoreCase("false"))) { return false; } 
     if (o.equals(Boolean.TRUE) || (o instanceof String && ((String) o).equalsIgnoreCase("true"))) { return true; } 
     if (o instanceof Number) { return o; } 
     return o.toString(); 
    } 

    public List<String> getStringListFromJsonArray(JSONArray jArray) throws JSONException { 
     List<String> returnList = new ArrayList<String>(); 
     for (int i = 0; i < jArray.length(); i++) { 
      String val = jArray.getString(i); 
      returnList.add(val); 
     } 
     return returnList; 
    } 

내 코드 내 파서 호출에

 Map<String, ArrayList<List<String>>> mapJSON=JsonToMap(convertThisTest);// JsonToMap(String JsonObj)     
     String valuefromJSONObject=GetValue(mapJSON, "batters", 1, 1); 
+1

링크의 예제를 시도 블로그는이 데이터를 분석하는 방법에 대한 자습서를 가지고하지 않습니다? – SudoRahul

+0

가능한 [자바에서 JSON을 구문 분석하는 방법] (http://stackoverflow.com/questions/2591098/how-to-parse-json-in-java) –

+0

그것은 없지만 어떻게 구문 분석 할 수 있습니다 이 형식은 .. – DreamBigAlvin

답변

0

google GSON Library를 사용하면 원하는만큼 동일한 요구 사항을 채울 수 있습니다.

다음은 Android에서 구현 된 샘플 자습서에 대한 링크입니다. Java가 사용되는 언어는 어떻게 되나요? JSOn에서 동일한 유형 및 멤버의 데이터 모델을 작성하기 만하면됩니다. 의 helpfull

http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html

관련 문제