Jackson JSON이 최상위 맵을 레코드로 구문 분석
record
type 및 Jackson JSON works great with them .최상위 수준이 임의의 키가 있는 개체인 JSON 구조를 구문 분석해야 하는 엣지 케이스에 도달했습니다.
나는 또한
Map
를 읽고 싶지 않고 각 키 입력 항목을 각각 레코드에 매핑하는 레코드를 읽고 싶었습니다.다음은 구문 분석하려는 인위적인 예제 JSON입니다.
{
"Some Child's Name": {
"age": 5
},
"Some Adult's Name": {
"age": 21
}
}
@JsonAnySetter
필드의 Map
주석(1)은 대부분의 방법을 얻었지만 솔루션의 마지막 부분은 맵을 (2)에서 미리 인스턴스화하는 것이 었습니다.위의 JSON을 수용할 수 있는 최종 레코드 선언은 다음과 같습니다.
record People(
@JsonAnySetter // (1)
Map<String, Person> people
) {
public People {
people = new HashMap<>(); // (2)
}
}
record Person(
int age
) { }
예를 들어
ObjectMapper
를 사용하면 ...final People people = objectMapper.readValue("""
{
"Some Child's Name": {
"age": 5
},
"Some Adult's Name": {
"age": 21
}
}""", People.class);
System.out.println(people);
출력
People[people={Some Adult's Name=Person[age=21], Some Child's Name=Person[age=5]}]
Reference
이 문제에 관하여(Jackson JSON이 최상위 맵을 레코드로 구문 분석), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/itzg/jackson-json-parsing-top-level-map-into-records-4e9j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)