作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试反序列化 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)?
最佳答案
fromJson()
方法的文档表明,您将 JSON 反序列化到的对象类型不能是通用的。您可以指定类型并使用您提到的 @SerializedName 属性来克服大小写不匹配的问题,但前提是您知道从 JSON 创建的对象的类型。
关于java - Gson将小写JSON反序列化为驼峰式Class对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45617410/
如 this question适用于“大型”Visual Studio 和 Resharper,我也希望在 VS Code 中看到该功能。 滚动浏览 shortcut list对于 VS Code,我
我是一名优秀的程序员,十分优秀!