我想序列化我的 POJO 类,当生成输出到 XML 时,它可以完美地工作,就像我想要的那样。 但不适用于 JSON。
我的主要 POJO 类
@XmlRootElement(name="result")
@XmlSeeAlso({ResultDataRowItemTest.class})
public class ResultDataRowTest {
private ResultDataRowItemTest response;
public ResultDataRowTest() {}
public ResultDataRowItemTest getResponse() {return response;}
public void setResponse(ResultDataRowItemTest pst) {this.response = pst;}
}
ResultDataRowItemTest 类:
public class ResultDataRowItemTest<T> {
private T item;
public ResultDataRowItemTest() {}
@JsonTypeInfo(use=Id.NAME, include=As.WRAPPER_OBJECT)
@XmlElements({
@XmlElement(name="user", type=RetUser.class)
})
public T getItem() {return item;}
public void setItem(T pst) {this.item = pst;}
}
RetUser 类:
@JsonTypeName("user")
@XmlRootElement(name="user")
public class RetUser {
private int userID;
private String userName;
private String firstName;
private String lastName;
public String getUserName() {return userName;}
public void setUserName(String userName) {this.userName = userName;}
public int getUserID() {return userID;}
public void setUserID(int userID) {this.userID = userID;}
public String getFirstName() {return firstName;}
public void setFirstName(String firstName) {this.firstName = firstName;}
public String getLastName() {return lastName;}
public void setLastName(String lastName) {this.lastName = lastName;}
}
XML 的结果:
<result>
<response>
<user>
<firstName>John</firstName>
<lastName>Pantau</lastName>
<userID>5</userID>
<userName>JohnP</userName>
</user>
</response>
</result>
这是 JSON 的结果:
{"response":{
"item":{
"user":{
"userID":5,
"userName":"JohnP",
"firstName":"John",
"lastName":"Pantau"
}
}
}}
问题是,如何删除 JSON 的对象“item”?所以结果就像 XML。
非常感谢之前
最佳答案
看起来您正在为 XML 使用 JAXB,为 JSON 使用 Jackson。
看看http://wiki.fasterxml.com/JacksonInFiveMinutes#Data_Binding_with_Generics您可能需要传递泛型类型定义。
需要在ResultDataRowTest中指定Jackson注解。
关于java - 使用 jackson 序列化通用 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8612164/