我在我的应用程序中使用了一个Web服务,该服务将返回与名称相关联的ID列表。一个例子如下:
{
"6502": "News",
"6503": "Sports",
"6505": "Opinion",
"6501": "Arts",
"6506": "The Statement"
}
如果所有字段都是动态的,我如何为Gson构建一个POJO以反序列化?
答案 0 :(得分:3)
如何反序列化到地图中?
Gson gson = new Gson();
Type mapType = new TypeToken<Map<String, String>>() {}.getType();
String json = "{'6502':'News','6503':'Sports','6505':'Opinion','6501':'Arts','6506':'The Statement'}";
Map<String, String> map = gson.fromJson(json, mapType);
使用地图对我来说听起来很合理(因为Java是静态类型的)。即使这可行(也许使用JavaCompiler) - 访问该对象可能与访问地图没有太大区别。
答案 1 :(得分:2)
我不太了解Gson,但我怀疑这是不可能的。您必须事先知道哪些字段是可能的,尽管字段可能不在Json中,因此为null。
您可以通过解析Json字符串在运行时创建类,但我不知道这是否值得麻烦。
如果一切都是动态的,你最好的选择是将Json字符串反序列化为字符串或数组的映射等,就像其他Json库一样(我不知道Gson是否也可以这样做,但你需要的类是通常称为JSONObject
和JSONArray
)。
因此,上面的Json字符串会产生Map<String, String>
。