码迷,mamicode.com
首页 > Web开发 > 详细

解决嵌套list类型的JSONObject/JSONArray转换成原来list问题。

时间:2015-10-15 20:40:29      阅读:559      评论:0      收藏:0      [点我收藏+]

标签:

解决转换过程中,对象的集合类成员变量变成其他类型对象的问题。

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);

    

  }

 

}

 

解决嵌套list类型的JSONObject/JSONArray转换成原来list问题。

标签:

原文地址:http://www.cnblogs.com/recordmytime/p/4883408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!