Erzwingen Sie, dass Jackson zusätzliche Zeilenumbrüche mit Anmerkungen hinzufügt

Ich habe folgende Klasse:

public class Message {
    private String text;

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }    
}

Wenn ich die Instanz mit Jackson in JSON konvertiere, erhalte ich standardmäßig:

{"text":"Text"}

Ich hätte gern:

{"message":{"text":"Text"}}

Gibt es eine JAXB / Jackson-Anmerkung, mit der ich mein Ziel erreichen kann?

Als Workaround kann ich meine Klasse mit einer anderen Klasse abschließen:

public class MessageWrapper {
    private Message message;

    public Message getMessage() {
        return message;
    }

    public void setMessage(Message message) {
        this.message = message;
    }
}

oder eine allgemeinere Lösung:

public class JsonObjectWrapper<T> {
    /**
     * Using a real map to allow wrapping multiple objects
     */
    private Map<String, T> wrappedObjects = new HashMap<String, T>();

    public JsonObjectWrapper() {
    }

    public JsonObjectWrapper(String name, T wrappedObject) {
        this.wrappedObjects.put(name, wrappedObject);
    }

    @JsonAnyGetter
    public Map<String, T> any() {
        return wrappedObjects;
    }

    @JsonAnySetter
    public void set(String name, T value) {
        wrappedObjects.put(name, value);
    }
}

Welches kann so verwendet werden:

Message message = new Message();
message.setText("Text");
JsonObjectWrapper<Message> wrapper = new JsonObjectWrapper<Message>("message", message);

Gibt es eine JAXB / Jackson-Anmerkung, mit der ich mein Ziel erreichen kann?

Vielen Dank.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage