日期:2014-05-18  浏览次数:20802 次

struts中返回json类型的数据,root为一个集合
本帖最后由 yz1311 于 2014-04-14 10:22:34 编辑
struts.xml
<result name="getInfo" type="json">
<param name="root">list</param> 
</result>


这是action中的list定义
private List<Student> list;

Student.java定义
// Fields

private Integer UId;
private UserInfo userInfo;
private String SName;
private String SPassword;
//setter  getter省略


这是返回的json数据,很明显,userInfo是作为一个单独的键存在的(这只不过是一条数据,也就是list中一个对象序列化产生的json数据)
{"SName":"dasd","SPassword":"q","UId":4,"userInfo":{"UEmail":"qw","UId":4,"ULastLoginTime":null,"ULevel":null,"UOther":null,"UPhone":"qw","student":null,"teacher":null}}


现在我就想将userInfo里面的键值对放在最外面,也就是这样
{"SName":"dasd","SPassword":"q","UId":4,"UEmail":"qw","UId":4,"ULastLoginTime":null,"ULevel":null,"UOther":null,"UPhone":"qw","student":null,"teacher":null}


请问有什么办法?

我能想到的是将两个list整合成一个list,然后返回整合后的list,但是这样太耗费时间和资源
------解决方案--------------------
方法一:将那3个属性加入到UserInfo 对象中(只是它的属性),你要做的可能是复制的问题了。这种字段不多的话推荐使用
方法二:不用struts的json,自己写json,json包网上都有
------解决方案--------------------
建议你自己写json,struts对json的支持不是很好,你可以写一个dto对象直接查出你需要的数据然后手动拼json,通过流write到前台,这样效率最高。