java - spring api - jackson 将一个对象序列化为一个数组

标签 java json spring serialization jackson

我遇到了关于 jackson 序列化对象的方式的问题。

我有一个类

public class Solution {     
   private int id;  
   private String description;
      private User user;    
     private Date createdDate;  
     private Date lastModifiedDate;     
     private int isActive; 
}

我只想从数据库中选择 id 和 description:

public List<Solution> getSolutionForSearching() {
   String hql = "SELECT id,description  FROM Solution";         
     Session session = solutionDao.getSession();        
     Query query =session.createQuery(hql);         
     return query.list();   
}

我预计响应是一个对象数组

 [ { id: 35, description: "12" }, { id: 36, description: "1a"   }]

但是得到的结果是数组的数组

[ [35, "12" ], [  36, "1a"  ]]

如何序列化响应数据以满足需求?

最佳答案

您的 hql 查询没有返回 Solution 类型的实例。相反,它返回 int、String 对。所以 Jackson 无法将它们映射到正确的形式。

您应该从数据库返回完整的对象 Solution,或者在将查询结果传递给 Jackson 之前将查询结果映射到 Solution 对象。

目前您的Solution 对象非常小,因此您不必担心性能问题。只需像这样修改 hql 查询:

String hql = "SELECT solution FROM Solution solution"; 

关于java - spring api - jackson 将一个对象序列化为一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36640791/

相关文章:

java - 将 org.acra.* 导入 android 项目会出错。

json - 通过 Google 标签管理器插入 JSON

ruby-on-rails - Rails 4 - 简单地在另一个 JSON 中包含多个 JSON

java - 衍生线程中的 Spring 事务

java - 选择性编码对象

java - Selenium Safari WebDriver 不工作

json - 触发器以在 PostgreSQL 中从 JSON 对象创建记录

java - 方法级别的Spring Profiles?

java - @Transactional 在 Spring Boot 中不起作用

java - 在java中,如何将一个对象写入文件,然后从文件中读取它并将其转换回HDFS中的原始对象?