fastjson可以解析巢狀的內部類嗎?
阿新 • • 發佈:2018-12-26
類圖:
內部類:
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修飾 具體原因不明