将list转换为JSON对象,其中Object含有级联对象,如何获取级联对象的JSON对象?
angiexing 2011-03-02 10:40:30
如:Person:{String:name,String:gender,Address:adrr},其中adrr是个级联对象
通过json-lib调用JSONArray.fromObject(list)总是提示死循环,只用把所有one-many,many-many的属性过滤掉才可以,可是我想获取对象级联对象的JSON对象,怎么做?
...全文
910 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
既想想获取对象级联对象的JSON对象,又不想死循环,,,那就把这个对象复制一份,,就不会级联查询了。。。 不要用=, 引用是同一个,还是会有数据库关联的 spring 提供了 BeanUtils.copyProperties()
owen1759 2013-08-14
  • 打赏
  • 举报
回复
到底死循环发生在什么地方?看你的结构,目前看来应该不会发生死循环, 你最好把Address结构发出来
一点晨辉 2013-08-12
  • 打赏
  • 举报
回复
JsonIgnore
司机 2011-03-03
  • 打赏
  • 举报
回复
不懂JSON!
bjliuzg 2011-03-03
  • 打赏
  • 举报
回复
你都没说清什么关联关系大家就开始讨论了, addr里保存的比如 A:河北省xx市 B:河南省xx市 C:河北省xx市xx镇,你要这么关联?先取到A的地址,你想管理A下的所有镇吗,一定要搞清楚上下级关系for循环才可以有机会推出,要不然当然死循环了。
angiexing 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用楼主 angiexing 的回复:]
如:Person:{String:name,String:gender,Address:adrr},其中adrr是个级联对象
通过json-lib调用JSONArray.fromObject(list)总是提示死循环,只用把所有one-many,many-many的属性过滤掉才可以,可是我想获取对象级联对象的JSON对象,怎么做?
[/Quote]

那不是还要重新构造 一个新类?假如我要adrr中的省份属性,得提取出来构造新类吗?
miss味道 2011-03-02
  • 打赏
  • 举报
回复
LZ如不嫌麻烦可以尝试自己拼JSON格式。
不过我们在JAVA项目中多数也是用LZ这种方法JSONArray.fromObject(),只不过我们多数情况下,是自己定义一个类,类种的属性就是String:name,String:gender,Address:adrr就是自己所需要的数据类型及名称。把类中的所需要的属情初始成自己所需要的值后就直接把这个类放入list中,然后再把list放入JSONArray.fromObject(list),
Landor2004 2011-03-02
  • 打赏
  • 举报
回复
和关联单项双向有什么关系吗???

也不去改的entity文件,你只需要在生成json的时候,不让他一层一层的连接下去,
jsonConfig.setExcludes(new String[] { "users","其他"});
看我上面的程序,也许是我理解错你的意思了,或者你理解错我的意思了 :)
angiexing 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 landor2004 的回复:]
即使想要级联的属性,也不至于a到b,再到a,再到b,再到a......

如果你想要a和b的属性,那么你就把b中对a的关联内容过滤掉;
[/Quote]
...那样关联变成单向的了。。。
Landor2004 2011-03-02
  • 打赏
  • 举报
回复
即使想要级联的属性,也不至于a到b,再到a,再到b,再到a......

如果你想要a和b的属性,那么你就把b中对a的关联内容过滤掉;
angiexing 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 landor2004 的回复:]
是不是出现了嵌套循环了,可以把关联表的关联属性去掉:

比如

Java code
public User{
private Address address;
。。。。。。
}

public Address{
private List<User> users;
。。。。。。
}

JsonConfig jsonConfig = new……
[/Quote]
我就是想要级联表的属性,不过退一步想,既然延迟加载了,貌似不可以取到所有级联对象的属性,所有还是绕过这个,自定义了一个JAVA BEAN,选择的时候自定义此对象进行封装,不知道有没有更好的办法,期待中~~~
Landor2004 2011-03-02
  • 打赏
  • 举报
回复
是不是出现了嵌套循环了,可以把关联表的关联属性去掉:

比如
public User{
private Address address;
。。。。。。
}

public Address{
private List<User> users;
。。。。。。
}

JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setExcludes(new String[] { "users","其他"});
JSONObject newEntityJson = JSONObject.fromObject(user,jsonConfig);
angiexing 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 youaremy1bestlove 的回复:]
LZ如不嫌麻烦可以尝试自己拼JSON格式。
不过我们在JAVA项目中多数也是用LZ这种方法JSONArray.fromObject(),只不过我们多数情况下,是自己定义一个类,类种的属性就是String:name,String:gender,Address:adrr就是自己所需要的数据类型及名称。把类中的所需要的属情初始成自己所需要的值后就直接把这个类放入list中,然后再把list放入JSON……
[/Quote]

那不是还要重新构造 一个新类?假如我要adrr中的省份属性,得提取出来构造新类吗?

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧