반응형
Jackson은 추가 필드를 Map으로 역직렬화
JSON 객체의 알 수 없는 필드를 모두 엔트리로 역직렬화하려고 합니다.MapPOJO의 멤버입니다.
예를 들어 JSON은 다음과 같습니다.
{
"knownField" : 5,
"unknownField1" : "926f7c2f-1ae2-426b-9f36-4ba042334b68",
"unknownField2" : "ed51e59d-a551-4cdc-be69-7d337162b691"
}
POJO는 다음과 같습니다.
class MyObject {
int knownField;
Map<String, UUID> unknownFields;
// getters/setters whatever
}
잭슨에게 설정하는 방법이 있나요?그렇지 않은 경우, 효과적인 방법 중 하나는StdDeserializer그것을 하다unknownFields좀 더 복잡하지만 잘 알려진 일관된 타입이 될 수 있습니까?
이 목적에 딱 맞는 기능과 주석이 있습니다.
테스트해 본 결과, 다음과 같이 UUID로 동작합니다.
class MyUUIDClass {
public int knownField;
Map<String, UUID> unknownFields = new HashMap<>();
// Capture all other fields that Jackson do not match other members
@JsonAnyGetter
public Map<String, UUID> otherFields() {
return unknownFields;
}
@JsonAnySetter
public void setOtherField(String name, UUID value) {
unknownFields.put(name, value);
}
}
그리고 이렇게 작동합니다.
MyUUIDClass deserialized = objectMapper.readValue("{" +
"\"knownField\": 1," +
"\"foo\": \"9cfc64e0-9fed-492e-a7a1-ed2350debd95\"" +
"}", MyUUIDClass.class);
또한 Strings와 같은 보다 일반적인 유형도 작동합니다.
class MyClass {
public int knownField;
Map<String, String> unknownFields = new HashMap<>();
// Capture all other fields that Jackson do not match other members
@JsonAnyGetter
public Map<String, String> otherFields() {
return unknownFields;
}
@JsonAnySetter
public void setOtherField(String name, String value) {
unknownFields.put(name, value);
}
}
(이 기능은 처음에 이 블로그 투고에서 찾았습니다).
언급URL : https://stackoverflow.com/questions/39156293/jackson-deserialize-extra-fields-as-map
반응형
'programing' 카테고리의 다른 글
| order_item_id WooCommerce 입수방법 (0) | 2023.03.26 |
|---|---|
| ng-repeat 사용자 지정 정렬 함수 (0) | 2023.03.26 |
| Unity에서의 Json 및 Json 어레이의 시리얼화 및 시리얼화 해제 (0) | 2023.03.26 |
| Woocommerce: 카트에 추가된 후 사용자 지정 jquery 이벤트 (0) | 2023.03.26 |
| Windows Forms 프로그램이 "처리 중"일 때 ajaxStart/ajaxStop과 유사한 스피너를 표시합니까? (0) | 2023.03.26 |