java - 使用 jackson 序列化通用 JSON

标签 java xml json spring jackson

我想序列化我的 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/

相关文章:

xml - XSD选择和枚举有什么区别?

android - 可以在 Android XML 中创建这个简单的形状吗?

java - 应用程序如何使用 JAR 中的文件进行读写?

java - 在 JodaTime 中更改 shortDate() 格式的日期模式

java - recyclerview.adapter 重置单选按钮

php - MYSQL 列中有 9,000 个字符串 - 使用哪种数据类型?

java - 读取包含许多 json 对象的 Json 文件

java - 错误: Failed to resolve: android.支持:support. v7 :29. 0.2

xml - '不允许序列化 'SimpleXMLElement' 在 session xml 值中插入错误

json - 我正在尝试使用 ARM 模板部署 Azure SQL VM。我收到错误,因为模板引用 'ion5eddb999' 不明确