를 사용하여 addional 포장을 추가 나는 다음과 같은 클래스가 : 기본적으로 잭슨을 사용하여 JSON에 인스턴스를 변환 할 때포스 잭슨 주석
public class Message {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
내가 얻을 : 내가 좋아하는 것
{"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, 1.9 혼자'DeserializationConfig.Feature.UNWRAP_ROOT_ELEMENT' 기능 또는 주석 '의 추가를 설정하기 위해 우리를 필요로 @JsonRootName '도 필요합니까? – asgs
나는 UNWRAP만으로도 충분하다는 것을 검증해야 할 것이다. 질문은 이름이 맵핑되어야하는지 여부입니다. 그러나'@ JsonRootName'이 없어도 기본 이름이 존재합니다 (간단한 클래스 이름). 제대로 작동 할 수 있습니다. – StaxMan
그것이 효과가있다! 고마워. – asgs