- 追加された行はこの色です。
- 削除された行はこの色です。
- 障害メモ/Jacksonでxml上のコレクションをデシリアライズできない へ行く。
- 障害メモ/Jacksonでxml上のコレクションをデシリアライズできない の差分を削除
#author("2023-03-08T07:49:57+00:00","default:haruki","haruki") * キーワード [#p061e194] - Jackson - XML - Kotlin - data class * 現象 [#j4eb3fbe] Jacksonで次のようなXML上のコレクションをKotlinのデータクラスにデシリアライズできない。 <example> <elements> <element>...</element> </elements> </example> 次のエラーメッセージを得る。 could not find creator property with name ... * 原因 [#wf9102c6] データクラスを次のようには定義できない。 @JacksonXmlRootElement(localName = "example") data class Example( @field: JacksonXmlElementWrapper(localName = "elements") @field: JacksonXmlProperty(localName = "element") val elements: List<Element> = emptyList() ) * 対策 [#xfc0307c] コンストラクタ引数で該当のプロパティ(コレクション)の分を定義しない。 @JacksonXmlRootElement(localName = "example") data class Example( private var elements: List<Element> = emptyList() ) { @get: JacksonXmlElementWrapper(localName = "elements") @get: JacksonXmlProperty(localName = "element") var elements set(value) { _elements = value } get() = _elements } * 備考 [#v85b23bd] - コレクションでないプロパティはこのようにする必要はない * 参考 [#v16e14de] - [[@JacksonXmlElementWrapper doesn’t work with data classes · Issue #153 · FasterXML/jackson-module-kotlin:https://github.com/FasterXML/jackson-module-kotlin/issues/153#issuecomment-500071067]]