解决嵌套list类型的JSONObject/JSONArray转换成原来list问题。
2015-10-15 19:10
573 查看
解决转换过程中,对象的集合类成员变量变成其他类型对象的问题。
public class A {
private List<B> blist ;
public A(List<B> temp){
blist = temp;
}
public void setBlist(List<B> temp){
blist = temp;
}
public List<B> getBlist(){
return blist;
}
}
public class Mainclass{
public static void main(String args[]){
List <A> al = new ArrayList<A>();
List <B> bl = new ArrayList<B>();
bl.add(new B());
al.add(new A(bl));
//防止死循环
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
//变成了JSONArray的toString 传到前台。
String result = JSONArray.fromObject(al, jsonConfig).toString();
//前台stringify array,传到后台再 变回来
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
JSONArray jsonarray = JSONArray.fromObject(result);
List<A> al1= new ArrayList<A>();
//这里不能直接 使用JSONArray.toCollection() 需要把子类中的collection先处理,然后设置到父类中否则会变成一个别的对象。
for (int i = 0; i < jsonarray.size(); i++) {
JSONObject json = jsonarray.getJSONObject(i);
JSONArray blist = json.getJSONArray("blist");
@SuppressWarnings("unchecked")
List<B> blist= (List<B>) JSONArray.toCollection(blist , B.class);
A ob1 = (GroupProperty) JSONObject.toBean(json, A.class);
ob1.setBlist(blist);
al1.add(ob1);
}
//这里al1就对了
System.out.println(al1);
}
}
public class A {
private List<B> blist ;
public A(List<B> temp){
blist = temp;
}
public void setBlist(List<B> temp){
blist = temp;
}
public List<B> getBlist(){
return blist;
}
}
public class Mainclass{
public static void main(String args[]){
List <A> al = new ArrayList<A>();
List <B> bl = new ArrayList<B>();
bl.add(new B());
al.add(new A(bl));
//防止死循环
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
//变成了JSONArray的toString 传到前台。
String result = JSONArray.fromObject(al, jsonConfig).toString();
//前台stringify array,传到后台再 变回来
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
JSONArray jsonarray = JSONArray.fromObject(result);
List<A> al1= new ArrayList<A>();
//这里不能直接 使用JSONArray.toCollection() 需要把子类中的collection先处理,然后设置到父类中否则会变成一个别的对象。
for (int i = 0; i < jsonarray.size(); i++) {
JSONObject json = jsonarray.getJSONObject(i);
JSONArray blist = json.getJSONArray("blist");
@SuppressWarnings("unchecked")
List<B> blist= (List<B>) JSONArray.toCollection(blist , B.class);
A ob1 = (GroupProperty) JSONObject.toBean(json, A.class);
ob1.setBlist(blist);
al1.add(ob1);
}
//这里al1就对了
System.out.println(al1);
}
}
相关文章推荐
- Objective-C开发-Foundation框架
- form前台提交List<Object>对象以及后台处理
- UIWebView 中 JS 与 Objective-C 通信
- JAVA int 强制类型转换错误提示(Cannot cast from Object to int)
- Object C 基本数据类型
- oc 字符串NSString
- 【GNU】WINDOWS平台之Objective-C开发(环境搭建)
- Objective-C排序算法实现
- .NET Framework中Object基类有哪些方法?
- Kotlin object express 匿名内部类
- Objective-C--block的概念和基本使用
- OC 日志打印
- Objective-C--分类的使用
- Expected BEGIN_OBJECT but was BEGIN_ARRAY at line
- Objective-C中的一些细枝末节(更新)
- WaitForMultipleObjects使用详解
- WaitForMultipleObjects使用详解
- json二级对象数据变成字段串[object Object]
- 《Programming with Objective-C》第七章 Values and Collections
- 基于Theano的深度学习(Deep Learning)框架Keras学习随笔-04-目标函数