类图:
内部类:
public class D3 { private D1 d1; private D2 d2; public D1 getD1() { return d1; } public void setD1(D1 d1) { this.d1 = d1; } public D2 getD2() { return d2; } public void setD2(D2 d2) { this.d2 = d2; } @Override public String toString() { return "D3{" + "d1=" + d1 + ",d2=" + d2 + '}'; } public class D1{ private String a1; private List<D4> d4 = new ArrayList<>(); public String getA1() { return a1; } public void setA1(String a1) { this.a1 = a1; } public List<D4> getD4() { return d4; } public void setD4(List<D4> d4) { this.d4 = d4; } @Override public String toString() { return "D1{" + "a1='" + a1 + '\'' + ",d4=" + d4 + '}'; } public class D4{ private String a4; public String getA4() { return a4; } public void setA4(String a4) { this.a4 = a4; } @Override public String toString() { return "D4{" + "a4='" + a4 + '\'' + '}'; } } } public class D2{ private String a2; public String getA2() { return a2; } public void setA2(String a2) { this.a2 = a2; } @Override public String toString() { return "D2{" + "a2='" + a2 + '\'' + '}'; } } }
测试类
@Test public void testFastJson(){ String s = "{\"d1\":{\"a1\":\"1\",\"d4\":[{\"a4\":\"4\"},{\"a4\":\"5\"}]},\"d2\":{\"a2\":\"3\"}}".trim(); D3 d3 = JSON.parSEObject(s,D3.class); System.out.println(d3); }
结果:能够正常进行解析
总结:fastjson可以解析嵌套的内部类,这样使用嵌套内部类的方式可以使程序看起来更清晰
还有一个问题:在使用嵌套内部类的时候报错
fastJson解析报错com.alibaba.fastjson.JSONException:create instance error,class json.TestFJson$...
解决方法是:将内部类加static修饰 具体原因不明
参考:fastJson解析报错com.alibaba.fastjson.JSONException: create instance error,class json.TestFJson$