【发布时间】:2017-08-10 15:07:14
【问题描述】:
我正在尝试反序列化所有字段设置为小写的 JSON。问题是:我的 POJO 对象的属性设置为驼峰式,当我尝试使用 Gson.fromJson 反序列化时,我的驼峰式属性未设置。
示例 JSON:
[
{
"idpojo": 1,
"namepojo": "test"
}
]
POJO 类:
public class Pojo {
private Integer idPojo;
private String namePojo;
//constructors, getters and setters
}
反序列化代码:
List<T> objects = new ArrayList<>();
// At this point I only have an variable with a reference to a classe. Let's assume it is in fact a reference to Pojo class
Class VARIABLE_WITH_REFERENCE_TO_A_CLASS = Pojo.class;
Class pojoReference = VARIABLE_WITH_REFERENCE_TO_A_CLASS;
String json = EXAMPLE_JSON_HERE;
JSONArray jsonArray = new JSONArray(json);
int len = jsonArray.length();
for (int i = 0; i < len; i++) {
objects.add((T) new Gson().fromJson(jsonArray.get(i).toString(), pojoReference)));
}
我将 JSON 反序列化为泛型类列表而不是 Pojo 类列表的原因是因为此时我的代码不知道应该创建什么类。
此代码运行良好。问题是:反序列化后没有设置 Pojo 类的驼峰式属性。
到目前为止,我一直在尝试在字段上使用 @SerializedName 注释,并创建自定义反序列化器,但对我来说也没有这个技巧,因为我真的不想/可以编写特定的代码来反序列化对象.
问题:
使用泛型,如何将具有小写属性的 JSON 对象反序列化为具有驼峰属性的 Java 类(如 Pojo.class)?
【问题讨论】:
标签: java json serialization gson deserialization