[alibaba/fastjson]jsonDirect在反序列化时,会失败

2025-11-24 324 views
9

直接上例子

public class JsonTest {

    public static class Bean {

        Bean() {}

        private List<Integer> list;
        @JSONField(jsonDirect=true)
        public String json;

        /**
         * 只有getter,没有setter方法
         * @return
         */
        public List<Integer> getList() {
            if (list == null) {
                list = new ArrayList<>();
            }
            return list;
        }

        public String getJson() {
            return json;
        }

        public void setJson(String json) {
            this.json = json;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (!(o instanceof Bean)) return false;

            Bean bean = (Bean) o;

            if (getList() != null ? !getList().equals(bean.getList()) : bean.getList() != null) return false;
            return getJson() != null ? getJson().equals(bean.getJson()) : bean.getJson() == null;
        }

        @Override
        public int hashCode() {
            int result = getList() != null ? getList().hashCode() : 0;
            result = 31 * result + (getJson() != null ? getJson().hashCode() : 0);
            return result;
        }

        @Override
        public String toString() {
            return "Bean{" +
                    "list=" + list +
                    ", json='" + json + '\'' +
                    '}';
        }
    }

    @Test
    public void test() throws Exception {
        Bean bean = new Bean();
        bean.getList().add(1);
        bean.getList().add(2);
        bean.setJson(JSON.toJSONString(bean));
        String json = JSON.toJSONString(bean);
        Assert.assertEquals(bean, JSON.parseObject(json, Bean.class));
    }
}

运行结果: java.lang.AssertionError: Expected :Bean{list=[1, 2], json='{"list":[1,2]}'} Actual :Bean{list=[1, 2], json='null'}

回答

1

发现不是fastjson的问题,源代码下面还有个Assert,是测试xml序列化的,出错的是这个assert,所以请关闭这个issure

0

@vipcxj 自己提的issue,确认没问题后,自己可以close哦

7

没找到close按钮

4

原来这个是close issure啊,我一直以为是close 评论,和cancel一个作用