【发布时间】:2012-04-02 05:23:11
【问题描述】:
Jackson json 注释中以下 jax-b 注释的等效方式是什么?
我需要生成 json 而不是 xml,并且需要知道在 jax-b 中等效表示的常规杰克逊注解。
- 重命名字段。
- 使用 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_;}
}
【问题讨论】:
-
@XmlElement(name = "new")不适合您吗?我刚刚在 Jersey servlet(使用 Jackson)上试了一下,效果很好。 -
我正在使用 RestyGWT - 我认为在 RestyGWT 中找不到该功能,因此在尝试/提议提交补丁之前我需要知道 jackson equiv。
-
感谢@BlessedGeek 的提示。可以在wiki.fasterxml.com/AnnotationIntrospector 找到更多信息尽管链接中的方法有点旧,但我正在使用此代码来设置序列化器/反序列化器的优先级。 objectMapper.setAnnotationIntrospector(new AnnotationIntrospectorPair(new JacksonAnnotationIntrospector(), new JaxbAnnotationIntrospector()));
标签: java xml json annotations jackson