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修饰 具体原因不明

参考:fastJson解析报错com.alibaba.fastjson.JSONException: create instance error,class json.TestFJson$

猜你在找的Json相关文章