当前位置:编程学习 > JAVA >>

JSON转换问题

a实体类
private class A{
   private Integer id;
   private String xxx; 
   private B b;  // 这是B实体


b实体类
@JsonIgnoreProperties( { "bDetail" })
private class B{
   private Integer id;
   private String xxx;
   Set<BDetail> bDetail= new HashSet<BDetail>();// 这是B实体明细一对多
}

Bdetail的实体应该可以不用模拟了。

以上省略很多东西,纯属模拟情形。

我在查询A实体的时候,转换为json报错了,报的错是指向B实体的,
只要删除B实体里的set则可以这是怎么回事啊,明明已经用注解去掉了啊。 JSON --------------------编程问答-------------------- --------------------编程问答-------------------- 肯定啊,内存溢出了,因为他们之间的关系是双向的,,导致程序一直去重复取数据,
比如:a.getBs() 取到b的集合,然后每一个b又可以b.getA() 。。。。
这就是一个死循环,,,

解决方案就是 设置a为 root节点,就不会继续往下取数据。。
比如:
    @Action(value = "siteVisit", results = { @Result(name = "success", type = "json", params = { "root", "count" }) }) --------------------编程问答--------------------
引用 2 楼 ch656409110 的回复:
肯定啊,内存溢出了,因为他们之间的关系是双向的,,导致程序一直去重复取数据,
比如:a.getBs() 取到b的集合,然后每一个b又可以b.getA() 。。。。
这就是一个死循环,,,

解决方案就是 设置a为 root节点,就不会继续往下取数据。。
比如:
    @Action(value = "siteVisit", results = { @Result(name = "su……

------------------------------------------------------------------------------------
就是B没有A我才纳闷,A有B,B有BDetail。 --------------------编程问答--------------------
引用 3 楼 jiuliangyin 的回复:
引用 2 楼 ch656409110 的回复:肯定啊,内存溢出了,因为他们之间的关系是双向的,,导致程序一直去重复取数据,
比如:a.getBs() 取到b的集合,然后每一个b又可以b.getA() 。。。。
这就是一个死循环,,,

解决方案就是 设置a为 root节点,就不会继续往下取数据。。
比如:
    @Action(value = "siteVi……


那BDetail里面有哪些关联关系呢???肯定是有死循环的。。。 --------------------编程问答-------------------- 还没解决?,晚上发给我试试 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 用google 的插件 Gson  转值很方便。
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,