如何将 JSON 字段名称映射到不同的对象字段名称?

新手上路,请多包涵

以下 jax-b 注释在 Jackson json 注释中的等价方式是什么?

我需要生成 json 而不是 xml,并且需要知道在 jax-b 中等效表示的常规 jackson 注释。

  1. 重命名字段。
  2. 使用 getters 而不是字段。

如果 json/xml 元素名称是 java 保留字,如“ new ”、“ public ”、“—63a1ad267fd2bb72f0716dae5fc8a-”、 static 等——

因此我们必须将 POJO 字段分别命名为“_new_”、“_public_”、“_static_”等,

但在生成的 XML(和 json)元素中使用 jax-b 注释将它们重命名回“new”、“public”、“static”等。

重命名字段

@XmlAccessorType(XmlAccessType.FIELD)
public class Person{
    @XmlElement(required = true)
    protected String name;
    @XmlElement(required = true)
    protected String address;
    @XmlElement(name = "contractor")
    protected boolean _restricted_ ;
    @XmlElement(name = "new")
    protected boolean _new_ ;
}

重定向到使用属性 getter (我认为这是在 jax-b 中完成的)

 @XmlAccessorType(XmlAccessType.PROPERTY)
public class Person{
    protected String name;
    protected String address;
    protected boolean _restricted_ ;
    protected boolean _new_ ;

    @XmlElement(required = true)
    protected String getName() {return name;}
    @XmlElement(required = true)
    protected String getAddress() {return address;}
    @XmlElement(name = "contractor")
    protected boolean getRestricted() {return _restricted_;}
    @XmlElement(name = "new")
    protected boolean getNew(){return _new_;}
}

原文由 Blessed Geek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 978
2 个回答

可能有点晚了,但无论如何..

您可以重命名属性,只需添加

@JsonProperty("contractor")

并且默认情况下 Jackson 使用 getter 和 setter 来序列化和反序列化。

更多详细信息: http ://wiki.fasterxml.com/JacksonFAQ

原文由 Enrichman 发布,翻译遵循 CC BY-SA 3.0 许可协议

例如,您还可以在 getter 和 setter 中使用它来将其重命名为不同的字段

public class Sample {

    private String fruit;

    @JsonProperty("get_apple")
    public void setFruit(String fruit) {
        this.fruit = fruit;
    }

    @JsonProperty("send_apple")
    public String getFruit() {
        return fruit;
    }

}

原文由 Vijai 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题