此问题已在此处有答案:
How to decode JSON with unknown field using Gson?(1个答案)
昨天关门了。
我有一个对象的json对象,我试图将内部对象Map到Java类。
{
"176294012937458694583": {
"id": "176294012937458694583",
"description": "Beta",
"name": "BetaName",
"account_id": "096382648647"
}
"3428378574582548573293": {
"id": "3428378574582548573293",
"description": "Omega",
"name": "OmegaName",
"account_id": "32735847382"
}
"4657556334646766874556": {
"id": "4657556334646766874556",
"description": "Delta",
"name": "DeltaName",
"account_id": "93758598257"
}
}
MyJavaClass
String id;
String description;
String name;
String accountId;
我希望像这样访问内部对象&使用GsonMap到MyJavaClass:
JsonObject jsonObject = response.body().getAsJsonObject("176294012937458694583");
MyJavaClass myJavaClass = gson.fromJson(response.body().toString(), new TypeToken<MyJavaClass>(){}.getType());
但是内部对象的memberName和内部对象的数量在json数据返回之前是未知的。那么访问这些对象并将其Map到MyJavaClass的更好方法是什么呢?
2条答案
按热度按时间5uzkadbs1#
你可以使用Jackson的ObjectMapper将你的字符串输入反序列化为字符串键到MyJavaClass值对象的Map:
然后,您可以按以下方式访问对象:
rmk:要让Jackson正常工作,必须在MyJavaClass中有一个默认的构造函数和显式的getter
p8h8hvxi2#
正如OldProgrammer所建议的那样,this回答了我的问题。使用jsonObject.entrySet访问我的内部对象的自定义序列化器是我正确Map到MyJavaClass所需要的。