[alibaba/fastjson]【v-1.73】JSONObject.toJSON 无法序列化java 8 LocalDateTime

2024-05-22 268 views
4

使用了注解JSONField, 指定了format=""

com.alibaba.fastjson.serializer.FieldSerializer

public Object getPropertyValue(Object object) throws InvocationTargetException, IllegalAccessException { Object propertyValue = fieldInfo.get(object); if (format != null && propertyValue != null) { //line 155 未对 java 8 date进行支持
if (fieldInfo.fieldClass == java.util.Date.class || fieldInfo.fieldClass == java.sql.Date.class) { SimpleDateFormat dateFormat = new SimpleDateFormat(format, JSON.defaultLocale); dateFormat.setTimeZone(JSON.defaultTimeZone); return dateFormat.format(propertyValue); } } return propertyValue; }

回答

6

未发现问题,可以看看我写的测试哟,或者贴一下你的 testcase

8

@ZivYan 我们先对齐下问题,我的意思是toJSON这个方法没有使用到format的格式,而是采用了默认的日期格式,所以符合你的assert("iso format",jsonObject.getDate)。我上面贴的代码显示就是漏了LocalDateTime的支持。

3

workaroud:

JSONObject.toJsonString JSONObject.parseObject 这两个方法都支持了java8 localdatetime,所以转两遍可以达到。