我遇到了关于 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/