添加addional包裝我有以下類:力傑克遜使用註釋
public class Message {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
當使用傑克遜默認實例轉換成JSON我得到:
{"text":"Text"}
我想獲得:
{"message":{"text":"Text"}}
有任何JAXB /傑克遜註釋,我可以使用來實現我的目標?
作爲一種變通方法,我可以換我的班與其他類:
public class MessageWrapper {
private Message message;
public Message getMessage() {
return message;
}
public void setMessage(Message message) {
this.message = message;
}
}
或更通用的解決方案:
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);
}
}
其中可用於像這樣:
Message message = new Message();
message.setText("Text");
JsonObjectWrapper<Message> wrapper = new JsonObjectWrapper<Message>("message", message);
有沒有我可以用來實現的JAXB/Jackson註釋 我的目標?
謝謝。
StaxMan,如果JSON字符串的根元素名稱具有序列化過程中被忽略,不傑克遜1.9要求我們單獨設置'DeserializationConfig.Feature.UNWRAP_ROOT_ELEMENT'功能或添加註釋'的@JsonRootName '也是必需的? – asgs
我必須確認 - UNWRAP可能夠用了;問題是名稱是否必須映射。但即使沒有'@ JsonRootName',也存在默認名稱(簡單的類名),這可能工作正常。 – StaxMan
它的工作!非常感謝。 – asgs