以下jax-b注释的Jackson json注释中的equiv方式是什么?如何将JSON字段名称映射到不同的对象字段名称?
我需要生成json而不是xml,并且需要知道在jax-b中等效表示的常规jackson注释。
- 重命名一个字段。
- 使用getters而不是字段。
这些功能如果JSON/XML元素名称是一个java的保留字 像“new
”,“public
”尤为重要,“static
”等
所以我们必须命名POJO字段分别为“_new_”,“_public_”,“_static_”等,
但使用jax-b注释将它们重新命名为“新”,“公共”,“静态”等 生成的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 = “新”)'不适合你?我只是在一个Jersey servlet(使用Jackson)上尝试过它,它运行良好。 – Danny 2012-03-16 16:50:38
我正在使用RestyGWT - 我认为该功能在RestyGWT中找不到,因此在尝试/建议提交修补程序之前,我需要知道jackson equiv。 – 2012-03-16 17:05:16
感谢@BlessedGeek提示。更多信息可以在http://wiki.fasterxml.com/AnnotationIntrospector 发现尽管链接中的方法有点旧了,我使用这段代码来设置序列化器/解串器的优先级。 objectMapper.setAnnotationIntrospector( 新AnnotationIntrospectorPair( 新JacksonAnnotationIntrospector(), 新JaxbAnnotationIntrospector() ) ); – aheryan 2016-03-15 17:56:05