Java Gson将小写JSON反序列化为camel case类对象

Java Gson将小写JSON反序列化为camel case类对象,java,json,serialization,gson,deserialization,Java,Json,Serialization,Gson,Deserialization,我正在尝试反序列化所有字段都设置为小写的JSON。问题是:我的POJO对象的属性设置为camel大小写,当我尝试用Gson.fromJson反序列化时,我的camel大小写属性没有设置 JSON示例: [ { "idpojo": 1, "namepojo": "test" } ] POJO类: public class Pojo { private Integer idPojo; private String namePojo;

我正在尝试反序列化所有字段都设置为小写的JSON。问题是:我的POJO对象的属性设置为camel大小写,当我尝试用Gson.fromJson反序列化时,我的camel大小写属性没有设置

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)));
}
List objects=new ArrayList();
//此时,我只有一个引用了类的变量。让我们假设它实际上是对Pojo类的引用
类变量_与_引用_至_A_Class=Pojo.Class;
类pojoReference=变量,引用到类;
String json=EXAMPLE_json_;
JSONArray JSONArray=新JSONArray(json);
int len=jsonArray.length();
对于(int i=0;i
我之所以将JSON反序列化为一个泛型类列表而不是Pojo类列表,是因为在代码的这一点上,我不知道应该创建什么类集合

这段代码运行良好。问题是:Pojo类中的camel case属性在反序列化之后没有设置

到目前为止,我一直在尝试在字段上使用@SerializedName注释,并创建自定义反序列化程序,但这两种方法都不适用于我,因为我确实不想/可以编写用于对象反序列化的特定代码

问题:


使用generic,如何将具有小写属性的JSON对象反序列化为具有驼峰大小写属性的Java类(如Pojo.class)?

fromJson()方法的
Documentation说明将JSON反序列化为的对象类型不能是generic。您可以指定一个类型并使用您提到的@SerializedName属性来克服大小写不匹配的问题,但前提是您知道从JSON创建的对象的类型。

使用Jackson而不是Gson进行反序列化来解决此问题

Jackson必须是2.5版或更高版本,还必须配置映射程序以接受不区分大小写的属性

新工作守则:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

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(mapper.readValue(new JSONObject(json).toString(), pojoReference));
}
ObjectMapper mapper=new ObjectMapper();
configure(MapperFeature.ACCEPT\u不区分大小写\u属性,true);
列表对象=新的ArrayList();
//此时,我只有一个引用了类的变量。让我们假设它实际上是对Pojo类的引用
类变量_与_引用_至_A_Class=Pojo.Class;
类pojoReference=变量,引用到类;
String json=EXAMPLE_json_;
JSONArray JSONArray=新JSONArray(json);
int len=jsonArray.length();
对于(int i=0;i

谢谢大家抽出时间

谢谢你的输入@Tyler,但我说,这不是我的选择。