JacksonライブラリJson to Object
xmlは、soap結果にオブジェクトマッピングのコードを正確に記録する.
JacksonはSpringBootに含まれるバージョンです.
2021年6月 SpringBoot 2.2.6 Groovy 2.5 Pojo、DTO、VOなどターゲットカテゴリのマッピング
(ex){"b":"123"}上のオブジェクトメンバー変数aに割り当てる.
{ "b": "123"} -> Data -> { "b": "123"}
他に方法がある.
1つのメンバー変数に複数のAliasを指定することもできます.
(注意)Jackson 2.9に追加された@JsonAliasプレゼンテーション
JacksonはSpringBootに含まれるバージョンです.
2021年6月
class Data {
def a
def b
def getA() {
return a
}
def setA(def a) {
this.a = a
}
...
}
マッピングコードdef json = ...
ObjectMapper objectMapper = new ObjectMapper()
// 객체에 정의되지 않은 필드가 있더라도 무시
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
// 배열이 아닌 객체라도 List 변수에 할당 가능
objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true)
... 각종 설정 ... 빌더 패턴도 지원되는걸로 보임
Data data = objectMapper.readValue(json, Data.class);
しかし、jsonフィールド名とオブジェクトのフィールド名が違うとしたら?(ex){"b":"123"}上のオブジェクトメンバー変数aに割り当てる.
class Data {
def a
def getA() {
return a
}
@JsonSetter('b') // 요 어노테이션을 지정합니다.
def setA(def a) {
this.a = a
}
...
}
しかし@JsonSetterを書き終えてオブジェクトをJsonに再変換したときaが消えてbになった?{ "b": "123"} -> Data -> { "b": "123"}
class Data {
def a
@JsonGetter('a') // a 로 생성하기 위해 요 어노테이션을 써줍니다.
def getA() {
return a
}
@JsonSetter('b')
def setA(def a) {
this.a = a
}
...
}
では、この場合、getter/setterを常に位置決めすべきではないでしょうか.他に方法がある.
class Data {
@JsonAlias('b') // 요 어노테이션 하나면 됩니다.
def a
def getA() {
return a
}
def setA(def a) {
this.a = a
}
...
}
@JsonAliasはJackson 2.9からサポートされています.1つのメンバー変数に複数のAliasを指定することもできます.
(注意)Jackson 2.9に追加された@JsonAliasプレゼンテーション
Reference
この問題について(JacksonライブラリJson to Object), 我々は、より多くの情報をここで見つけました https://velog.io/@nonz/Jackson-라이브러리-Json-to-Objectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol