【发布时间】:2018-09-07 22:11:03
【问题描述】:
我需要为一个项目设置可配置的超时时间,该项目从 YAML 文件中读取不同的配置。
我注意到java.time.Duration 有方法parse,Jackson 使用它来反序列化持续时间字符串。问题是它使用 ISO-8601 格式并期望持续时间具有PnDTnHnMn.nS 格式。虽然遵循标准是个好主意,但要求人们提供超时,因为PT10M 不是最佳选择,而10m 是首选。
我确实为持续时间字段编写了一个自定义反序列化器,但杰克逊默认无法处理这个似乎很奇怪。
使用 Jackson ObjectMapper 将人类友好的 10m、5s 和 1h 反序列化为 java.time.Duration 的最简单方法是什么?
【问题讨论】:
-
仅供参考: 读取和解释像
10m这样的输入称为解析,而不是反序列化。 -
看起来这些输入是非标准的,例如,我怎么知道
m表示分钟而不是月?我希望生成这些人类友好字符串的同一个库可以选择使用这种东西。 -
我认为 Duration 甚至没有一个月选项
-
我认为将
timeout-minutes放在配置中是最好的选择。
标签: java jackson deserialization duration jackson-modules