Gson.fromJson,如何在我的 POJO class 上使用动态 json 值?

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"
         }
      }
}
}

自定义 POJO class:

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

    public class Query {
        public ? pages;

        //...
    }
}

Java代码:

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

我应该为我的"pages"变量设置什么Class来处理动态变化(对于exp: "18302") json 键?

您可以使用地图。

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": {...} 将作为一个条目存储在 Map 中,键为 "18302",值为新的 Page 对象。

如果您不想创建主页 class,这将有效:

Map<String, Map<String, String>> pages;

然后使用它:

pages.get("18302").get("title") // "Car"