[alibaba/fastjson]完善DateFormat配置优先级

2024-08-28 697 views
9

fix issue #1868 #1968 #2029 #2452 正常的配置优先级应该是从小到大的,目前fastjson支持四种方式配置dateFormat,按照优先级从高到低分别为:

  1. 通过JSON.toJSONStringWithDateFormat()函数传参
  2. 通过在属性上添加@JSONField(format="yyyy-MM-dd")注解
  3. 通过xml配置或FastJsonConfig.setDateFormat()函数传参
  4. 通过修改JSON.DEFFAULT_DATE_FORMAT变量值

但是目前通过1和3方式配置的dateFormat存储到同一个变量里的,导致提升方式2的优先级时会同时覆盖1和3的优先级。所以用了不同的变量fastJsonConfigDateFormatPattern来存储方式3配置的dateFormat,并把与FastJsonConfig相关的setDateFormat方法统一到了这个变量上。

另外为了避免冲突, 场景3中使用FastJsonConfig设置的dateFormat的一些方法进行了调整,并已全部通过测试。

回答

9

应该是这个的优先级 2通过在属性上添加@JSONField(format="yyyy-MM-dd")注解 最高吧

2

我的理解是影响粒度越小优先级越高,toJSONStringWithDateFormat()只会影响调用函数的这一次转换的结果,所以优先级最高

5

@Omega-Ariston toJsonString 时传入了 时间格式的情况呢?

toJsonString 传入时间格式时. 我想这个格式只应用到 没有加 @JsonFiled(format) 的字段.但是其他的字段我想用传入的..这种用例是否支持?

6
696 #2832