【问题标题】:Gson Deserialize:Json Field Name Different from Java Object Field NameGson反序列化:Json字段名称与Java对象字段名称不同
【发布时间】:2016-08-02 21:47:55
【问题描述】:

传递给我的 json 中的一个字段与我想将此 json 反序列化为的 Java 对象的字段名称不同。假设我想反序列化:

{"bag": "LV"}

进入

Class MyClass {
    String backpack;
}

所以字段backpack在反序列化后应该有LV的值。

问题是MyClass 来自我无法更改或添加注释的库。我也无法控制传递给我的 json。我想知道如何配置 Gson 来做到这一点。所有其他字段完美匹配。

【问题讨论】:

  • 看来你需要编写一个自定义的反序列化器——幸运的是,有一个关于How to write a custom JSON deserializer for Gson的讨论——试一试,让我们知道这是否有帮助。看起来确实是您正在寻找的东西。
  • 切换到 Jackson 并使用 mixins。

标签: java json


【解决方案1】:
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();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-02
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多