gpt4 book ai didi

java - jackson : avoiding exceptions due to unmodeled fields

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:49:52 24 4
gpt4 key购买 nike

我有一些 bean,它们在 JSON 中(明确地)对核心数据类型进行建模。但是,有时我正在阅读的 Jsons 中有额外的数据。

有没有办法在 jackson 中注释/定义 Bean,以便它对某些字段(例如我知道的字段)使用显式字段名称,同时将额外的字段塞入映射/列表?

最佳答案

是的,假设你真的想保留所有额外的/无法识别的参数,然后做这样的事情:

public class MyBean {
private String field1;
private String field2;
private Integer field3;
private Map <String, Object> unknownParameters ;

public MyBean() {
super();
unknownParameters = new HashMap<String, Object>(16);
}

// Getters & Setters here

// Handle unknown deserialization parameters
@JsonAnySetter
protected void handleUnknown(String key, Object value) {
unknownParameters.put(key, value);
}
}

要配置参数的全局处理,您可以选择定义 DeserializationProblemHandler 的实现并使用 ObjectMapper 配置全局注册它。

DeserializationProblemHandler handler = new MyDeserializationProblemHandler();
ObjectMapper.getDeserializationConfig().addHandler(handler);

如果您发现您确实关心未知参数,那么您可以简单地关闭它们。在每个类的基础上使用 @JsonIgnoreProperties(ignoreUnknown = true),或通过配置 ObjectMapper 全局:

objectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false)

关于java - jackson : avoiding exceptions due to unmodeled fields,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8889296/

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