gpt4 book ai didi

java - Gson将小写JSON反序列化为驼峰式Class对象

转载 作者:行者123 更新时间:2023-12-02 12:23:28 30 4
gpt4 key购买 nike

我正在尝试反序列化 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/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com