1. 程式人生 > >fastjson可以解析巢狀的內部類嗎?

fastjson可以解析巢狀的內部類嗎?

類圖:


內部類:

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修飾 具體原因不明