4

私のWebサービスは、SpringMVCを使用してxmlとjsonの両方でデータを返します。jsonの場合、springはXMLにJacksonとXStreamを使用します。ただし、XStreamはシリアル化にフィールドを使用し、Jacksonはメソッド(セッター/ゲッター)を使用します。

すべて/一部のゲッターをxmlシリアル化に含めたいと思います。これは、カスタムコンバーターまたはアノテーションを介してどのように実現できますか?

4

2 に答える 2

4

カスタムJavaBeanConverterを登録する必要があります。ここで単体テストを確認してください:https ://fisheye.codehaus.org/browse/xstream/tags/XSTREAM_1_1_3/xstream/src/test/com/thoughtworks/xstream/converters/javabean /JavaBeanConverterTest.java?r=554

XStream xstream = new XStream();
xstream.registerConverter(new JavaBeanConverter(xstream.getClassMapper(), "class"), -20);

クレジットは次の元のスレッドに送られます:http://xstream.10960.n7.nabble.com/How-to-use-public-accessor-instead-of-field-td1193.html

于 2013-03-27T01:00:17.070 に答える
1

フィールドを公開すると、Jacksonはgetter/setterメソッドの代わりにフィールドを使用できます。これを引き起こすアノテーション@JsonPropertyもあります。

public class KeyValuePair {

    @JsonProperty
    private int value;
    @JsonProperty
    private String key;
}

または、フィールドのみを使用するようにjacksonを指定する方法をここで確認してください-できればグローバルに理解してください:

 @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
于 2013-02-22T19:19:59.947 に答える