不明なフィールドを持つjsonをオブジェクトに逆シリアル化するには、@JsonAnySetterがあります。
しかし、そのようなjsonをオブジェクトに読み込んで、いくつかの既知のフィールドを変更し、それをjsonに書き戻すとどうなりますか?不明なプロパティは失われます。
そのような場合をどのように処理しますか?オブジェクトをマッピングすることは可能ですか、それともデータをJsonNodeまたはMapに読み込む必要がありますか?
カスタムJavaクラスへのアンマーシャリングには、長所と短所があります。それはあなたに素晴らしい静的型付けを与えます、しかしそれはまあ、静的です。のjavadocは@JsonAnySetter
、JAXBに似ていることを示唆しています@XmlAnyElement
が、とは異なり@XmlAnyElement
、データオブジェクトには名前付け情報が含まれていないため、一方通行です。
動的なJSONストリームを処理する必要がある場合は、箇条書きをかじってMap
orを使用する必要がありますJsonNode
。
@JsonAnyGetter
動的プロパティのシリアル化を可能にするメソッドを提供するために使用できるようになりました。
@JsonAnyGetter
public Map<String, String> getDynamicProperties() {
return dynamicProperties; // a field like this exists
}
ジャクソン用のこのRFEがあります:http://jira.codehaus.org/browse/JACKSON-292このような機能を追加します。あなたがそれについて考えるとき、完全に理にかなっています。