次のjax-bアノテーションのJackson jsonアノテーションにおけるequiv方法は何ですか?JSONフィールド名を別のオブジェクトフィールド名にマップする方法は?
xmlではなくjsonを生成する必要があり、jax-bで等価的に示される従来のjackson注釈を知る必要があります。
- フィールドの名前を変更します。
- フィールドの代わりにゲッターを使用します。
JSON/XML要素名は「new
」、「public
」、「static
」のようなJavaの予約語 であれば、これらの機能は特に重要である、など
我々は名前を付けることがあるように"_new_"、 "_public_"、 "_static_"などのPOJOフィールドをそれぞれ
としますが、jax-bアノテーションを使用して名前を「new」、「public」、「static」などに戻します。 生成されたXML(およびjson)要素
@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(名前= "新しい")は'あなたのために動作しませんか?私はJerseyサーブレット(Jacksonを使用しています)で試してみましたが、うまくいきました。 – Danny
私はRestyGWTを使用しています - この機能はRestyGWTにはないと思うので、パッチを提出しようとする前にjackson equivを知る必要があります。 –
ヒントのために@BlessedGeekに感謝します。より多くの情報はhttp://wiki.fasterxml.com/AnnotationIntrospectorにあります リンクのメソッドが少し古くなっていますが、このコードを使用してシリアライザ/デシリアライザの優先順位を設定しています。 objectMapper.setAnnotationIntrospector( 新しいAnnotationIntrospectorPair( 新しいJacksonAnnotationIntrospector()、 新しいJaxbAnnotationIntrospector() ) )。 – aheryan