KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have the following class: public class Message { private String text; public String getText() { return text; } public void setText(String text) { this.text = text; } } When converting the instance to JSON using Jackson by default I get: {"text":"Text"} I would like to get: {"message":{"text":"Text"}} Is there any JAXB / Jackson annotation I can use to achieve my goal? As a workaround, I can wrap my class with another class: public class MessageWrapper { private Message message; public Message getMessage() { return message; } public void setMessage(Message message) { this.message = message; } } or a more generic solution: 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); } } Which can be used like so: Message message = new Message(); message.setText("Text"); JsonObjectWrapper<Message> wrapper = new JsonObjectWrapper<Message>("message", message); Is there any JAXB / Jackson annotation I can use to achieve my goal? Thanks.
Tags (comma-separated)
Save Edits
Cancel