gpt4 book ai didi

java - 使用 JAX-RS 和 MOXy 处理无效枚举

转载 作者:行者123 更新时间:2023-12-02 03:08:32 25 4
gpt4 key购买 nike

我目前正在尝试使用 Glassfish 4(使用 Jersery 2.0 和 EclipseLink 2.5)对通过 REST PUT 提供的 JSON 对象进行解码。

JSON 对象由多个属性组成,其中包括映射到 Java 枚举的字符串值。

除了有效负载中提供了无效的 ENUM 值之外,一切都按预期工作

JSON 对象:

{
"rating":"INVALID",
...
}

被解码为:

public RatingInfo {
@ValidRating
private Rating rating;
...

public Rating getRating(){...}
public void setRating(Rating rating){...}
...
}

public enum Rating {
G,
PG
}

如果 JSON 负载中的值不是有效的评级,它当前会返回 null,这似乎是 JAXB 忽略转换错误的结果,请参阅 Handling invalid enum values while doing JAXB Unmarshalling

问题是我需要区分评级实际上为空(这是有效用例)的情况与 JSON 中评级值无效的情况,以便我可以在 REST 响应中返回 400 错误。

我不知道如何覆盖使用 JAX-RS 并使用 MOXy 作为默认提供程序时忽略转换错误的默认行为。

最佳答案

最简单的方法是创建一个 XmlAdapter 并自行处理 Stringenum 的转换。然后当该值不正确时您可以采取相应的措施。

关于java - 使用 JAX-RS 和 MOXy 处理无效枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22794772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com