今天在将hibernate查询结果数据使用Gson转成json数据时,出现:Attempted to serialize java.lang.Class: org.hibernate.proxy.HibernateProxy报错,上网冲浪了一段时间,试了多种方案还是无法完美解决,最总在一片文章终于找到了完美的解决方案,记录下
原文地址:http://jingpin.jikexueyuan.com/article/42296.html
解决方案:
List<Dept> all = deptRepository.findAll();
Gson gson = new GsonBuilder().registerTypeAdapter(Dept.class, new JsonSerializer<Dept>() {
@Override
public JsonElement serialize(Dept dept, Type type, JsonSerializationContext jsonSerializationContext) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("id", dept.getId());
jsonObject.addProperty("name", dept.getName());
return jsonObject;
}
}).create();
String s = gson.toJson(all);
System.out.println(s);
new JsonSerializer<T>实现其serialize方法,
然后创建JSONObject实体,通过addProperty方法,定义转换后的json格式。
addProperty(String s,object o):s为json中的key值,o为接送的value值。
最终得到的结果:
[{"id":1,"name":"技术部"},{"id":2,"name":"运营部"},{"id":3,"name":"财务部"},{"id":4,"name":"人事部"},{"id":5,"name":"总公办"}]