[alibaba/fastjson]1.2.75版本WriteDateUseDateFormat格式化java.sql.Date默认行为改变(会有兼容问题)

2024-09-02 231 views
9

从1.2.75版本开始,java.sql.Date没有再单独处理,而是默认转换为java.util.Date,使用yyyy-MM-dd HH:mm:ss格式化,而不再格式化位yyyy-MM-dd。

@Data
    private static class DemoBean{
        private Date date;
        private Time time;
    }

    @Test
    public void test(){
        DemoBean demoBean = new DemoBean();
        demoBean.date = Date.valueOf("2022-06-01");
        demoBean.time = Time.valueOf("13:13:13");
        String content = JSON.toJSONString(demoBean, SerializerFeature.WriteDateUseDateFormat);
        System.out.println(content);
    }

1.2.75及其以上输出:{"date":"2022-06-01 00:00:00","time":"13:13:13"} 1.2.74及其以下输出:{"date":"2022-06-01","time":"13:13:13"}

可能涉及类: com.alibaba.fastjson.serializer.DateCodec com.alibaba.fastjson2.writer.ObjectWriterImplDate

回答

5

https://github.com/alibaba/fastjson2/releases/tag/2.0.6 你可以用2.0.6试试看,2.0.6的行为是描述的那样的 我看了2.0.6版本还是有这个问题,实际是通过com.alibaba.fastjson2.writer.ObjectWriterImplDate处理,在这个类中java.sql.Date也被强制转换为了java.util.Date处理了,然后使用了默认的format:yyyy-MM-dd HH:mm:ss所以出现了这种情况。

1

非常感谢