jackson - 杰克逊以 FAIL_ON_UNKNOWN_PROPERTIES 失败
问题描述
使用 Jackson Json 提供程序从 Jersey Client 2.22 迁移到 2.27,Jackson 在未知属性上失败,即使配置正确;
final JacksonJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Client client = ClientBuilder.newClient().register(jacksonJsonProvider);
...
javax.ws.rs.core.Response r = requestBuiler.post(Entity.form(formData));
return r.readEntity(AccessTokenResponse.class);
如果对象中不存在某些字段,则响应反序列化崩溃/查看堆栈跟踪。
我不想在我的对象中添加任何注释。这在以前的版本中是不必要的。
堆栈跟踪
引起:com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:无法识别的字段“mobileNo”(类 ch.abraxas.oauth.egovsec.EGovUser),未标记为可忽略(20 个已知属性:“needsApproval”,“lastname”, “authType”、“accountNonExpired”、“externalId”、“identifier”、“accountNonLocked”、“otherRoles”、“cariId”、“credentialsNonExpired”、“username”、“language”、“organisations”、“contextName”、“firstname” ", "email", "authorities", "country", "landlineNo", "enabled"]) 在 [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); 行:1,列:
pom.xml
<javaee.version>8.0</javaee.version>
<jersey.version>2.27</jersey.version>
<jackson.version>2.9.4</jackson.version>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- Jersey stack -->
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>${jersey.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>${jackson.version}</version>
</dependency>
添加缺少的属性时,它可以正常工作。但这应该支持缺少的属性。
谢谢您的帮助 !
解决方案
推荐阅读
- python - 具有来自同一脚本的具有不同端口号的多个套接字的 Python 程序?
- python-3.x - 自定义损失缺少梯度操作
- python - 使用 Keras 在 Tensorflow 2.0 中处理负采样的最佳方法
- sqlite - SQLITE 选择唯一行
- arrays - Excel中的Concat Arrays单元格
- angular - 如何从规范化状态删除/移除项目?
- android - 从相机拍照后,ImageView 可单击以全屏打开图像
- symfony - 用于文件上传的查询参数的 Swagger 注释
- python - 为什么实例不能从类继承属性?
- java - 错误:活动类 {.MainActivity} 不存在