将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对象,怎么做?
...全文
891 13 打赏 收藏 转发到动态 举报
写回复
用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中的省份属性,得提取出来构造新类吗?
支持的浏览器 IE6、IE7、IE8、FireFox?()、Opera()、Safari()、Google Chrome()等等 异步调用支持传入复合对象作为异步方法的参数 工程svn下载地址 http://json-rpc-for-java.googlecode.com/svn/trunk/ 示例工程下载地址 测试环境:MyEclipse?、Jre1.4、tomcat 5.0 如果你要测试,可以采用相应的环境,不一定要那么高版本的环境 http://json-rpc-for-java.googlecode.com/files/JsonRpcExample2008-08-05.rar 概述 json-rpc-for-java,是仅仅不到100行的javascript代码和不到10个java文件实现的超级轻量级的通过 javaScript快速调用java对象并返回任意对象的轻量级框架,并且支持级联调用,也就是说不需要额外 的JavaScript?编程,就可以通过javascript调用被注册的java对象并返回java对象,如果被返回的对象 还有方法,这个在javascript中返回的java对象的变量,你还可以继续调用它的方法.....这就是这个轻 量级json-rpc-for-java的神奇之处。 当返回的是java对象List的时候,在javascript中体现为ArrayList?,如果是Map,着体现为js中的 Object,其他的和java中的调用基本相同。 特殊的地方是,通过JS调用java对象方法的时候只能传入简单类型的参数,比 如:String,int,float,long、Object(对应java的javabean或map)等。 json rpc for java的使用 请从http://code.google.com/p/json-rpc-for-java/downloads/list 下载 调用未注册和配置的类方法 1、 首先,被调用的类需要继承jcore.jsonrpc.common.JsonRpcObject?或实现接口jcore.jsonrpc.common.face.IjsonRpcObject?,并有默认的构造函数; 例如: package test.rpc; import jcore.jsonrpc.common.JsonRpcObject; public class MyTestRpc extends JsonRpcObject { /** * 调用:rpc.getRpcObj('test.rpc.MyTestRpc').getTestMsg() * @return */ public String getTestMsg() { return "噢,成功了!"; } } 2、 JSP的JavaScript?中调用的方式,例如:alert(rpc.getRpcObj('test.rpc.MyTestRpc?').getTestMsg()); 最新的资源,请到http://code.google.com/p/json-rpc-for-java/source/browse/#svn/trunk进行免费下载

67,512

社区成员

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

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