解決轉換過程中,對象的集合類成員變量變成其他類型對象的問題。
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);
}
}
