Jackson에서는 안전하게 JSON 문자열로 JsonNode를 캐스팅 할 수 있습니다.Jackson ObjectCodec에서 json 문자열
public class WrappedMessage extends JsonDeserializer<WrappedMessage> {
@Override
public WrappedMessage deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException {
ObjectCodec codec = jp.getCodec();
JsonNode node = codec.readTree(jp);
JsonNode payload = node.get("payload");
// How to get the payload as JSON
return new WrappedMessage();
}
}
이 ObjectMapper#writeValueAsString
이 작업을 수행하는 것이 가능하며 나는 ObjectCode
이 ObjectMapper
에 캐스트 할 수있는 정상적인 상황에서 알고 있지만, 매우 깨끗 될 것 같지 않습니다.
또한 것이 가능 payload.toString()
을 할 수 있지만, 문서 상태 다음 노드의 개발자 읽을 수있는 표현을 생산합니다
방법; 일 수도 있고이 유효한 JSON이 아닐 수도 있습니다. 유효한 JSON 출력 (또는 다른 Jackson 지원 데이터 형식 중 하나를 사용하여 출력 된 데이터 형식)은 인스턴스를 직렬화하기 위해 {ObjectMapper} 또는 {@link ObjectWriter}를 사용하십시오. 예를 들면 다음과 같습니다. String json = objectMapper .writeValueAsString (rootNode);
따라서이 중 하나를 사용하는 것은 안전하지 않습니다.
내가 볼 수있는 마지막 가능성은 새로운 ObjectMapper
을 만드는 것이지만, 나에게는 매우 효율적이지 않습니다.