提问人:xerocool 提问时间:8/8/2023 最后编辑:Anonymousxerocool 更新时间:8/16/2023 访问量:89
如何使用 fabric8 maven 插件为 Java zoneddatetime 添加自定义序列化程序/格式?
How to add a custom serializer/format for Java zoneddatetime with fabric8 maven plugin?
问:
我正在使用 fabric8 maven 插件从它的 yaml 文件自动生成 CRD 的 Java 类。其中一个字段是:
updated_time:
format: date-time
type: string
它正在转换为一个字段:java.time.zoneddatetime
@com.fasterxml.jackson.annotation.JsonFormat(timezone = "UTC", pattern = "yyyy-MM-dd'T'HH:mm:ssX")
private java.time.ZonedDateTime updated_time;
我想将上面的模式更改为 ,一个带有偏移量的时间戳,这样它就可以解析时间戳,例如。
我怎样才能做到这一点?在 java-generator-maven-plugin v6.2.0 上,打开以进行升级。yyyy-MM-dd'T'HH:mm:ssXXX
2023-08-07T06:43:19+00:00
答:
1赞
andreaTP
8/9/2023
#1
目前在 fabric8 java 生成器中无法做到这一点。 根据 OpenAPI 规范,日期时间字段应为 RFC 3339。
您介意详细说明发出错误日期格式的用例/项目吗?
无论如何,可行的解决方法是在生成之前在 CRD 中注释掉,以便您可以收到 .format: date-time
String
版本说明: 我确实相信您正在使用 java-generator 版本 > 6.8,因为对日期时间的本机支持最近才发布。
评论
0赞
xerocool
8/9/2023
我在问题中提到的日期(2023-08-07T06:43:19+00:00)似乎符合 RFC 3339 标准:utcc.utoronto.ca/~cks/space/blog/unix/...。发出日期格式的项目是另一种语言,我不在我手中。将字段类型更改为字符串并不理想,因为我想坚持使用原始的 CRD yaml。
0赞
andreaTP
8/10/2023
可悲的是,建议的日期不符合规范,它应该是这样的:(参考)。恐怕这是生产它的项目中的一个错误......如果它是开源的,我们可以提出问题,如果没有,请以某种方式报告。您可以使用类似的东西自动执行解决方法,但我不确定如何进一步提供帮助......2023-08-07T06:42:19Z
kustomize
0赞
andreaTP
8/11/2023
我退后一步:-)我正在再次阅读规范,并且规范确实允许使用时间偏移。让我们跟进这个上游问题: github.com/fabric8io/kubernetes-client/issues/5382 我们将很快发布修复程序,感谢您的报告。
0赞
xerocool
8/11/2023
谢谢。现在,我只注释掉格式。
0赞
andreaTP
8/11/2023
我在这里提供了相关的修复程序,请随时查看更改。
1赞
andreaTP
8/16/2023
#2
fabric8 java-generator 的 6.8.1 版已经发布,其中包括针对此问题的相关修复。
评论
java.time.OffsetDateTime