Open dengxiaolong1205 opened 2 months ago
这个需求不应该放到框架,可以在应用侧实现。 写两个方法: 一个带WriteDateUseDateFormat方法,一个不带。 然后定一个系统变量,调用json序列化的时候,控制用这两个方法中的哪个。
这个需求不应该放到框架,可以在应用侧实现。 写两个方法: 一个带WriteDateUseDateFormat方法,一个不带。 然后定一个系统变量,调用json序列化的时候,控制用这两个方法中的哪个。
但是我们应用场景中会出现同时返回java.sql.date和java.sql.datetime两种形式,这种情况下就没办法调两个方法来实现。1.2.68版本对java.sql.date是默认格式化为数据库存储格式的,后来有人对此处理提出issue,将此处理进行了变更,如果没传WriteDateUseDateFormat,默认格式化为数据库存储格式,如果传了WriteDateUseDateFormat,按传过来的时间格式进行格式化,但我认为,既然1.2.68版本对java.sql.date的处理是默认处理为数据库存储格式,那么就表示有人有和我类似的场景需求,不然不会在1.2.68版本加这个处理逻辑,同时toJSONStringWithDateFormat的SerializerFeature传参本身支持多个,是可以在增加一个枚举来单独控制java.sql.date是否仅格式化为数据库存储的格式的,通过扩展一个枚举让这个序列化更灵活,以解决java.sql.date和java.sql.datetime两种类型共存,但是希望转成json字符串中,分别格式化为yyyy-MM-dd和yyyy-MM-dd HH:mm:ss类型的需求,同时不传这个参数的话,就会按WriteDateUseDateFormat的逻辑处理,即解决了之前提issuse同学的问题,也解决了我这边的需求
FastJson 1.2.68版本在toJSONStringWithDateFormat时,会将java.sql.date默认处理成数据库存储格式yyyy-MM-dd,但是升级到1.2.83后,java.sql.date会受传参SerializerFeature.WriteDateUseDateFormat的格式进行格式化,经查看是有人提了issue #3473,使java.sql.date的格式化会跟随SerializerFeature.WriteDateUseDateFormat的格式进行格式化,但是当查询数据中的时间类型既有日期也有日期时间的时候,希望在格式化的时候,java.sql.date不受SerializerFeature.WriteDateUseDateFormat的格式控制,默认格式化为数据库存储格式yyyy-MM-dd,java.sql.datetime受SerializerFeature.WriteDateUseDateFormat的格式控制,格式化为yyyy-MM-dd HH:mm:ss,当前是无法实现的,期望可以增加一个参数,控制java.sql.date是否受SerializerFeature.WriteDateUseDateFormat的格式控制