Jackson에서 JSON 문자열을 JsonNode로 구문 분석하는 방법은 무엇입니까?
너무 간단해야하지만 #embarrasing 한 시간 동안 시도한 후에는 찾을 수 없습니다.
예를 들어 {"k1":v1,"k2":v2}
로 구문 분석 된 JSON 문자열을 가져와야합니다 JsonNode
.
JsonFactory factory = new JsonFactory();
JsonParser jp = factory.createJsonParser("{\"k1\":\"v1\"}");
JsonNode actualObj = jp.readValueAsTree();
준다
java.lang.IllegalStateException: No ObjectCodec defined for the parser, can not deserialize JSON into JsonNode tree
Richards가 약간 변형했지만 readTree
문자열을 사용할 수 있으므로 다음과 같이 단순화 할 수 있습니다.
ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readTree("{\"k1\":\"v1\"}");
당신은 사용해야합니다 ObjectMapper
:
ObjectMapper mapper = new ObjectMapper();
JsonFactory factory = mapper.getJsonFactory(); // since 2.1 use mapper.getFactory() instead
JsonParser jp = factory.createJsonParser("{\"k1\":\"v1\"}");
JsonNode actualObj = mapper.readTree(jp);
파서 작성에 대한 추가 문서는 여기 에서 찾을 수 있습니다 .
세 번째 변형 :
ObjectMapper mapper = new ObjectMapper();
JsonNode actualObj = mapper.readValue("{\"k1\":\"v1\"}", JsonNode.class);
Richard의 대답은 맞습니다. 또는 찾을 위치를 아는 MappingJsonFactory
(in org.codehaus.jackson.map
)을 만들 수도 있습니다 ObjectMapper
. 일반 때문에 당신이있어 오류는 JsonFactory
(에서 core
패키지)에 대한 종속성이 없습니다 ObjectMapper
합니다 (인 mapper
패키지).
그러나 일반적으로 다른 저수준 구성 요소를 사용 ObjectMapper
하고 걱정하지 않아도 JsonParser
됩니다. 스트림의 일부를 데이터 바인딩하거나 저수준 처리를 수행하려는 경우에만 필요합니다.
import com.github.fge.jackson.JsonLoader;
JsonLoader.fromString("{\"k1\":\"v1\"}")
== JsonNode = {"k1":"v1"}
참고 URL : https://stackoverflow.com/questions/3653996/how-to-parse-a-json-string-into-jsonnode-in-jackson
'Programing' 카테고리의 다른 글
C #에서 개인 속성을 사용해야하는 이유가 있습니까? (0) | 2020.04.24 |
---|---|
Favicon : .ico 또는 .png / 올바른 태그? (0) | 2020.04.24 |
데이터베이스에서 숫자의 정밀도와 스케일을 어떻게 해석합니까? (0) | 2020.04.24 |
자식 복제 중“https에 대한 원격 도우미를 찾을 수 없습니다” (0) | 2020.04.24 |
Django 모델에서 레코드를 삭제하는 방법은 무엇입니까? (0) | 2020.04.24 |