Search code examples
javajsongsonpojo

Gson.fromJson, how to use dynamic json value on my POJO class?


gson class:

import com.google.gson.*;

myJson:

{
"time": "notime",
"query": {
     "pages": {
         "18302": {
             "title": "Car",
             "pagelanguage": "en"
         }
      }
}
}

Custom POJO class:

public class MyClass {
    public String time;
    public Query query;

    public class Query {
        public ? pages;

        //...
    }
}

Java code:

Gson gson = new GsonBuilder().create();
MyClass data = gson.fromJson(myJson, MyClass.class);

What Class should i set to my "pages" variable to handle dynamically changing (for exp: "18302") json key?


Solution

  • You could use a Map.

    public class MyClass {
        public String time;
        public Query query;
    
        public static class Query {
            public Map<String, Page> pages; // <-- here
    
            public static class Page {
                public String title;
                public String pagelanguage;
            }
        }
    }
    

    "18302": {...} will be stored as an entry in the Map with the key being "18302" and the value being a new Page object.