2016-12-03 44 views
0

我想用gson解析下面的json,我的問題是我不能預測關鍵字「12345」,「ABCD」,「PKKK」等。請幫助我創建模型類。GSON解析不確定對象

{ 
    "data": { 
    "data": { 
     "DEQUE": { 
     "12345": { 
      "title": "Anil", 
      "location": "New york" 
     }, 
     "ABCD": { 
      "title": "Sonu", 
      "location": "Delhi" 
     }, 
     "PKKK": { 
      "title": "Monu", 
      "location": "Patiala" 
     } 
     } 
    } 
    } 
} 
+1

http://stackoverflow.com/questions/20442265/how-to-decode-json-with-unknown-field-using-gson –

+0

我可能dublicate檢查了上面的鏈接,並使用了Map seCpValuesMap;但它總是返回null。 – Anilkumar

回答

1

試試這個,

public static void main(String[] args) { 
    String data = "{\n" 
      + " \"data\": {\n" 
      + " \"data\": {\n" 
      + "  \"DEQUE\": {\n" 
      + "  \"12345\": {\n" 
      + "   \"title\": \"Anil\",\n" 
      + "   \"location\": \"New york\"\n" 
      + "  },\n" 
      + "  \"ABCD\": {\n" 
      + "   \"title\": \"Sonu\",\n" 
      + "   \"location\": \"Delhi\"\n" 
      + "  },\n" 
      + "  \"PKKK\": {\n" 
      + "   \"title\": \"Monu\",\n" 
      + "   \"location\": \"Patiala\"\n" 
      + "  }\n" 
      + "  }\n" 
      + " }\n" 
      + " }\n" 
      + "}"; 

    ParsedData data1 = new Gson().fromJson(data, ParsedData.class); 
    Map<String, Item> map = data1.getData().getData().getData(); 
    for (String key : map.keySet()) { 
     System.out.println(key + " : " + map.get(key).getTitle() + " @ " + map.get(key).getLocation()); 
    } 
} 

private class ParsedData { 

    Data1 data = new Data1(); 

    public Data1 getData() { 
     return data; 
    } 

    public void setData(Data1 data) { 
     this.data = data; 
    } 
} 

private class Data1 { 

    Data data = new Data(); 

    public Data getData() { 
     return data; 
    } 

    public void setData(Data data) { 
     this.data = data; 
    } 
} 

private class Data { 

    Map<String, Item> DEQUE = new HashMap(); 

    public Map<String, Item> getData() { 
     return DEQUE; 
    } 

    public void setData(Map<String, Item> data) { 
     this.DEQUE = data; 
    } 
} 

private class Item { 

    String title; 
    String location; 

    public String getTitle() { 
     return title; 
    } 

    public void setTitle(String title) { 
     this.title = title; 
    } 

    public String getLocation() { 
     return location; 
    } 

    public void setLocation(String location) { 
     this.location = location; 
    } 
}