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

时间:2016-04-15 07:25:29

标签: java json spring serialization 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"  ]]

如何序列化响应数据以符合要求?

1 个答案:

答案 0 :(得分:3)

您的hql查询不会返回Solution类型的实例。相反,它返回int,String对。所以杰克逊无法将它们映射到正确的形式。

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

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

String hql = "SELECT solution FROM Solution solution";