@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转化成字符串。
1条答案
按热度按时间n7taea2i1#
不加L后缀,反序列回来就不是Long了,而是Integer