私のWebサービスは、SpringMVCを使用してxmlとjsonの両方でデータを返します。jsonの場合、springはXMLにJacksonとXStreamを使用します。ただし、XStreamはシリアル化にフィールドを使用し、Jacksonはメソッド(セッター/ゲッター)を使用します。
すべて/一部のゲッターをxmlシリアル化に含めたいと思います。これは、カスタムコンバーターまたはアノテーションを介してどのように実現できますか?
カスタム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
フィールドを公開すると、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)