您的位置:首页 > 移动开发 > Objective-C

解决嵌套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);

    

  }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: