0

I want to parse the following json using gson, my issue is i cant predict the keys "12345", "ABCD", "PKKK", etc. Please help me in creating model classes.

{
  "data": {
    "data": {
      "DEQUE": {
        "12345": {
          "title": "Anil",
          "location": "New york"
        },
        "ABCD": {
          "title": "Sonu",
          "location": "Delhi"
        },
        "PKKK": {
          "title": "Monu",
          "location": "Patiala"
        }
      }
    }
  }
}
Community
  • 1
  • 1
Anilkumar
  • 223
  • 3
  • 14

1 Answers1

1

Try this,

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;
    }
}
K Neeraj Lal
  • 6,768
  • 3
  • 24
  • 33