首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在jackson反序列化期间,json中存在多个别名

在jackson反序列化期间,json中存在多个别名
EN

Stack Overflow用户
提问于 2021-06-20 18:29:44
回答 1查看 99关注 0票数 0

我的Java API服务(Java 11)有一个“请求”POJO。POJO是使用Jackson反序列化(jackson databind 2.12.3)创建的。POJO的一个字段有一个别名(@JsonAlias),以便在应用程序接口中向后兼容。如果字段的两个版本都存在于json (实际字段名版本和别名版本)中,我如何指示jackson抛出错误?

这是一个用于上述场景的小演示应用程序:

代码语言:javascript
复制
// Sample POJO
@lombok.Data
public class A {
    @com.fasterxml.jackson.annotation.JsonAlias("y")
    private int x; // Field names "x" with alias "y"
}

// Executed code
var om = new ObjectMapper().disable(MapperFeature.IGNORE_MERGE_FOR_UNMERGEABLE);
System.out.println(om.readValue("{\"x\": 1}", A.class));
System.out.println(om.readValue("{\"y\": 1}", A.class));
System.out.println(om.readValue("{\"x\": 1, \"y\": 1}", A.class));
System.out.println(om.readValue("{\"x\": 1, \"y\": 2}", A.class));
System.out.println(om.readValue("{\"y\": 1, \"x\": 2}", A.class));

// Output
A(x=1)
A(x=1)
A(x=1)
A(x=2)
A(x=2)

我需要至少最后两个案例失败,与Jackson映射相关的异常。第三种情况可能会失败,也可能不会失败(可能会失败,因为等式有时会变得复杂)。

我试着检查杰克逊在其数据库绑定模块的MapperFeature中是否有任何可以启用/禁用的东西,但没有任何运气。

我也尝试过签入JsonParser.FeatureDeserializationFeature,但它们更多地处理解析实际的Json输入,而不是处理POJO /注解处理,所以我不期望从那里得到任何东西……

EN

回答 1

Stack Overflow用户

发布于 2021-06-24 16:40:14

此功能目前在Jackson中不存在。

功能请求:https://github.com/FasterXML/jackson-databind/issues/3184

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68054902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档