Mit Jackson, wie kann ich sicher einen JsonNode zu einem JSON-String zu werfen.Jackson ObjectCodec zu string 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();
}
}
Es ist möglich, dies mit ObjectMapper#writeValueAsString
zu tun, und ich weiß, im normalen Kontext kann die ObjectCode
-ObjectMapper
gegossen werden, aber scheint nicht sehr sauber zu sein.
es auch möglich, zu tun payload.toString()
, sondern die Dokumentation wird:
Methode, die Entwicklerlesbare Darstellung des Knoten erzeugen wird; was kann oder nicht als gültige JSON sein. Wenn Sie möchten, gültig JSON-Ausgang (oder Ausgangs formatiert über einen anderen Jackson Datenformate unterstützt) stellen Sie sicher, verwenden {@link ObjectMapper} oder {@link ObjectWriter} eine Instanz serialisiert werden, zum Beispiel: String json = objectMapper .writeValueAsString (rootNode);
Also ist dies nicht sicher zu verwenden.
Die letzte Möglichkeit, was ich sehe, ist, eine neue ObjectMapper
zu konstruieren, scheint aber nicht sehr effizient zu mir.