Gson反序列化:Json字段名与Java对象字段名不同
传递给我的json中有一个字段与我想要反序列化此json的Java对象的字段名不同。假设我要反序列化:Gson反序列化:Json字段名与Java对象字段名不同,java,json,Java,Json,传递给我的json中有一个字段与我想要反序列化此json的Java对象的字段名不同。假设我要反序列化: {"bag": "LV"} 进入 因此,反序列化后,字段backpack应具有值LV 问题是MyClass来自一个我无法更改或添加注释的库。我也无法控制传递给我的json。我想知道如何配置Gson来实现这一点。所有其他字段都完全匹配。似乎您需要编写一个自定义反序列化程序-幸运的是,有一个关于它的讨论-试一试,并让我们知道这是否有帮助。它看起来确实像你正在寻找的。切换到Jackson并使用Mi
{"bag": "LV"}
进入
因此,反序列化后,字段backpack
应具有值LV
问题是
MyClass
来自一个我无法更改或添加注释的库。我也无法控制传递给我的json。我想知道如何配置Gson来实现这一点。所有其他字段都完全匹配。似乎您需要编写一个自定义反序列化程序-幸运的是,有一个关于它的讨论-试一试,并让我们知道这是否有帮助。它看起来确实像你正在寻找的。切换到Jackson并使用Mixin。
class CustomStrategy implements FieldNamingStrategy {
@Override
public String translateName(Field field) {
if (field.getName().equals("backpack")) {
return "bag";
}
return field.getName();
}
}
Gson gson = new GsonBuilder().setFieldNamingStrategy(new CustomStrategy()).create();
class CustomStrategy implements FieldNamingStrategy {
@Override
public String translateName(Field field) {
if (field.getName().equals("backpack")) {
return "bag";
}
return field.getName();
}
}
Gson gson = new GsonBuilder().setFieldNamingStrategy(new CustomStrategy()).create();