package com.alibaba.json.test;
import com.alibaba.fastjson.JSON;
import com.alibaba.json.test.Outter.Inner;
import com.alibaba.json.test.Outter.Inner.InnerInner;
import com.google.gson.Gson;
import junit.framework.TestCase;
class Outter{
private String name;
private InnerInner ii;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public InnerInner getIi() {
return ii;
}
public void setIi(InnerInner ii) {
this.ii = ii;
}
class Inner{
class InnerInner{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
}
public class InnerInnerTest extends TestCase{//深层内部类的序列化反序列化测试
public void testDeserialize(){//
String json = "{\"ii\":{\"name\":\"iicls\"},\"name\":\"ocls\"}";
Outter o = JSON.parseObject(json, Outter.class);
assertEquals("ocls", o.getName());
assertEquals("iicls", o.getIi().getName());
}
public void testSerialize(){
Outter o = new Outter();
Inner i = o.new Inner();
InnerInner ii = i.new InnerInner();
ii.setName("iicls");
o.setIi(ii);
o.setName("ocls");
String json = JSON.toJSONString(o);
assertEquals("{\"ii\":{\"name\":\"iicls\"},\"name\":\"ocls\"}", json);
}
public void testGson(){
Outter o = new Outter();
Inner i = o.new Inner();
InnerInner ii = i.new InnerInner();
ii.setName("iicls");
o.setIi(ii);
o.setName("ocls");
Gson gson = new Gson();//default setting
String json = gson.toJson(o);
assertEquals("{\"name\":\"ocls\",\"ii\":{\"name\":\"iicls\"}}", json);
Outter newO = gson.fromJson(json, Outter.class);
assertEquals("ocls", newO.getName());
assertEquals("iicls", newO.getIi().getName());
}
}