gpt4 book ai didi

java - Jackson ObjectCodec 转字符串 json

转载 作者:行者123 更新时间:2023-11-30 02:18:12 26 4
gpt4 key购买 nike

使用 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,但对我来说似乎不是很有效。

最佳答案

一种可能是创建一个 JsonGenerator 并使用 ObjectCodec.writeTree:

StringWriter writer = new StringWriter();
JsonGenerator jgen = codec.getFactory().createGenerator(writer);
codec.writeTree(jgen, payload);
String jsonPayload = writer.toString();

关于java - Jackson ObjectCodec 转字符串 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47653363/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com