java Jackson ObjectCodec到字符串json
有了Jackson,我如何安全地将JsonNode转换为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()
,但文档说明:
Method that will produce developer-readable representation of the node; which may or may not be as valid JSON. If you want valid JSON output (or output formatted using one of other Jackson supported data formats) make sure to use {@link ObjectMapper} or {@link ObjectWriter} to serialize an instance, for example: String json = objectMapper.writeValueAsString(rootNode);
所以这也不安全
我看到的最后一种可能性是构造一个新的ObjectMapper
,但对我来说似乎不是很有效
# 1 楼答案
一种可能是创建一个
JsonGenerator
并使用ObjectCodec.writeTree
: