Jackson JsonNode에서 유형화된 컬렉션으로
잭슨을 변환하는 적절한 방법은 무엇입니까?JsonNode
JAVA 컬렉션으로요?
만약 그것이 json 문자열이었다면ObjectMapper.readValue(String, TypeReference)
이 없다면JsonNode
유일한 선택지는ObjectMapper.treeToValue(TreeNode, Class)
유형화된 컬렉션을 제공하지 않거나ObjectMapper.convertValue(Object, JavaType)
개종을 위해 POJO를 받아들여서 기분이 안 좋은 것 같아요.
다른 "올바른" 방법이 있나요? 아니면 이것들 중 하나인가요?
원하는 유형의 컬렉션을 설명하는를 사용하여를 입수합니다.그런 다음 를 사용하여 를 해석합니다(아마도).
예를 들어, 데이터 베이스의List<String>
JSON 문자열만 포함하는 JSON 배열에서 제외됩니다.
ObjectMapper mapper = new ObjectMapper();
// example JsonNode
JsonNode arrayNode = mapper.createArrayNode().add("one").add("two");
// acquire reader for the right type
ObjectReader reader = mapper.readerFor(new TypeReference<List<String>>() {
});
// use it
List<String> list = reader.readValue(arrayNode);
반복기가 더 유용하면...
...또한elements()
의 방법ArrayNode
. 예를 다음에 나타냅니다.
sample.json
{
"first": [
"Some string ...",
"Some string ..."
],
"second": [
"Some string ..."
]
}
그래서...List<String>
다음 중 하나 안에 있습니다.JsonNode
s.
자바
이 내부 노드를 다음 노드로 변환하는 경우ArrayNode
를 사용할 수 있습니다.elements()
method: JsonNodes의 반복자를 반환합니다.
File file = new File("src/test/resources/sample.json");
ObjectMapper mapper = new ObjectMapper();
JsonNode jsonNode = mapper.readTree(file);
ArrayNode arrayNode = (ArrayNode) jsonNode.get("first");
Iterator<JsonNode> itr = arrayNode.elements();
// and to get the string from one of the elements, use for example...
itr.next().asText();
잭슨 오브젝트 맵퍼에 처음 오신 분?
이 튜토리얼이 마음에 들어요.https://www.baeldung.com/jackson-object-mapper-tutorial
업데이트:
를 사용할 수도 있습니다..iterator()
의 방법ArrayNode
. 똑같습니다.
호출과 동일
.elements()
;는 JSON Array 구성 요소의 루프에 편리한 "각" 루프를 사용할 수 있도록 구현됩니다.
의 자바독에서com.fasterxml.jackson.core:jackson-databind:2.11.0
ObjectMapper.convertValue() 함수는 편리하고 유형을 인식합니다.트리 노드와 Java 유형/컬렉션 간에 광범위한 변환을 수행할 수 있으며, 그 반대의 경우도 가능합니다.
사용 방법의 예를 다음에 나타냅니다.
List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
Map<String,List<String>> hashMap = new HashMap<>();
hashMap.put("myList", list);
ObjectMapper mapper = new ObjectMapper();
ObjectNode objectNode = mapper.convertValue(hashMap, ObjectNode.class);
Map<String,List<String>> hashMap2 = mapper.convertValue(objectNode, new TypeReference<Map<String, List<String>>>() {});
언급URL : https://stackoverflow.com/questions/39237835/jackson-jsonnode-to-typed-collection
'source' 카테고리의 다른 글
gson: null을 빈 문자열로 취급합니다. (0) | 2023.03.07 |
---|---|
javascript에서 fetch()를 사용하여 JSON 파일을 읽는 방법은 무엇입니까? (0) | 2023.03.07 |
키/값 테이블인 wp_postmeta에 대한 내부 조인을 많이 사용하여 쿼리 개선 (0) | 2023.03.07 |
Oracle에서 모든 권한을 가진 사용자 생성 (0) | 2023.03.07 |
모든 경과 도달 가능 상태를 포함한 리액트컴포넌트를 리셋하려면 어떻게 해야 하나요? (0) | 2023.03.07 |