类图:
内部类:
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$