fastjson SerializerFeature.WriteNonStringValueAsString不能作用到List属性中

gk7wooem  于 2021-11-27  发布在  Java
关注(0)|答案(1)|浏览(512)
@Test
    public void test3() {
        L<Long> l = new L<>();
        l.t = 4L;
        List<Long> list = new LinkedList<>();
        list.add(3L);
        l.list = list;
        String s
            = JSON.toJSONString(l, SerializerFeature.WriteClassName, SerializerFeature.WriteNonStringValueAsString);
        System.out.println(s);
        // list中的Long显示成了非字符串形式的3L,而属性t的则可以转成字符串
        assertTrue(StringUtils.contains(s, "\"list\":[3L],\"t\":\"4\""));
    }

    public static class L<T> {
        public T t;
        public List<T> list;
    }

希望能支持,因为在同时使用SerializerFeature.WriteClassName的时候,Long会被转化成3L这种形式,不复合JSON规范,会导致异常,所以希望能使用WriteNonStringValueAsString转化成字符串。

n7taea2i

n7taea2i1#

不加L后缀,反序列回来就不是Long了,而是Integer

相关问题