JAXBアノテーションを備えたJackson Json Libraryを使用してください

StackOverflow https://stackoverflow.com/questions/4738769

  •  12-10-2019
  •  | 
  •  

質問

私は私のResteasyベースのWebアプリケーション内でJaxBアノテーションサポートを有効にしようとしています。この記事は私に提案されました(http://wiki.fasterxml.com/jacksonjaxbannotations)。 Jackson-XC.jarを入手することはできますが、注釈の内省を登録する方法がわかりません。現在、ResteasyはJSON応答を自動的にシリアル化しますが、以下はどこに適合しますか?現在、ResteasyはJSONオブジェクトを自動的にシリアル化しています。

org.codehaus.jackson.xc.jaxbannotationintrospectorを含むJackson-XC JARを含める

    ObjectMapper mapper = new ObjectMapper();
    AnnotationIntrospector introspector = new JaxbAnnotationIntrospector();
    // make deserializer use JAXB annotations (only)
    mapper.getDeserializationConfig().setAnnotationIntrospector(introspector);
    // make serializer use JAXB annotations (only)
    mapper.getSerializationConfig().setAnnotationIntrospector(introspector);
役に立ちましたか?

解決

あなたが理解する必要があるのは、あなたが構成したobjectMapperを使用するResteasyの作成方法です。 JAX-RSは、プロバイダーを介してこれを行うための一般的な方法を提供しますが、Resteasyでこれを行うためのより簡単な方法があるかもしれません。一部のJAX-RS実装は、デフォルトでJAXB Annotation Introspectorも登録しています。

最後に:JaxBアノテーションを使用する必要がありますか?ジャクソンはそれらを使用できますが、好ましい方法は、オーバーライドが必要な場合に発見に基本的な命名規則とジャクソン自身の注釈を使用することです。 JAXBの問題は、それがXML固有であるため、JSONで使用すると少しインピーダンスがあることです。

他のヒント

返信ありがとうございます、私はあなたの提案を見ていきます...

JaxBアノテーションに固執したい理由は、@xmlrootelement(name = "ueserresponse")アノテーションにより、JSON応答で必要な追加のラッピング要素を許可するためです。以下の例を参照してください:

{"response":{"が欲しいuserresponse":[{" user ":{" businessregion ":" us "、" firstname ":" joe "、" language ":" en "、" lastname ":" smith "}}}]}現在のジャクソンの代わりにoutputs、{"response":[{"user":{"businessregion": "us"、 "firstName": "joe"、 "language": "en"、 "lastName": "smith"}}]}。とにかく、ラッパークラスを追加せずにジャクソンの@xmlrootelementを模倣することはありますか?

ユーザークラス:@XMLACCESSORTYPE(XMLACCESSTYPE.FIELD)@XMLROOTELEMENT(name = "userResponse")public class userResponseはabstractresponseを拡張します{プライベートユーザーユーザー;

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top