programing

잭슨 - JSON 문자열 직렬화 해제 - TypeReference vs TypeFactory.constructureCollection유형

sourcejob 2023. 2. 23. 22:44
반응형

잭슨 - JSON 문자열 직렬화 해제 - TypeReference vs TypeFactory.constructureCollection유형

StackOverflow 질문에서 JSON 문자열을 클래스 목록으로 역직렬화하려면

유형 1(docs 링크):

List<SomeClass> someClassList = mapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, SomeClass.class));

유형 2(docs 링크):

List<SomeClass> list = mapper.readValue(jsonString, new TypeReference<List<SomeClass>>() { });

위의 두 가지 유형 모두 작업을 수행하지만 이러한 구현 간의 차이점은 무엇입니까?

구축 후JavaType둘 다 같은 역직렬화 기능을 호출하기 때문에 유일한 차이점은 범용 타입의 처리 방식입니다.

두 번째 유형은 완전히 정적이므로 유형은 컴파일 유형으로 알려져 있어야 하며 다를 수 없습니다.따라서 기본 클래스 리터럴을 사용하는 것과 비슷합니다.

첫 번째는 동적이기 때문에 파라미터화에 따라 다른 것을 구축하는 데 사용할 수 있습니다.

개인적으로 저는 모든 경우에 대해 첫 번째 대안을 선호합니다(익명의 내부 클래스가 하나 더 생기는 것을 피함). 하지만 두 번째 것이 더 읽기 쉬울 수 있습니다.

이를 실현하는 또 하나의 방법은 다음과 같습니다.

List<SomeClass> list = Arrays.asList(mapper.readValue(jsonString, SomeClass[].class));

언급URL : https://stackoverflow.com/questions/11936620/jackson-deserialising-json-string-typereference-vs-typefactory-constructcoll

반응형