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

标签 java xml json annotations jackson

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

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

  1. 重命名字段。
  2. 使用 getter 代替字段。

如果 json/xml 元素名称是 java 保留字,这些特性尤其重要 比如“new”、“public”、“static”等

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

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

重命名字段

@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_;}
}

最佳答案

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

您只需添加即可重命名属性

@JsonProperty("contractor")

默认情况下,Jackson 使用 getter 和 setter 进行序列化和反序列化。

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

关于java - 如何将 JSON 字段名称映射到不同的对象字段名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9741134/

相关文章:

java - Hibernate 查询返回错误的日期

java - AlarmManager 在 Android 中不工作

javascript - 是否可以将模板对象保存为 JSON 标准格式的 JSON 文件?

python - 在 Python 中将对象保存到 JSON 或 XML 文件中

java - Spring OAuth2 刷新 token 在刷新访问 token 后更改

java - @JsonView 不过滤属性(Spring 4.1.0.RC2,Jackson 2.3.2)

java - 使用 Netty 的 Java 服务器端和 C++ 或 Objective C 的客户端

xml - 在XPath中使用转换功能会产生错误

javascript - XSLT:提供不同的数据 View

json - 如何使用 JSON 路径引用根 key ?