首页 > Java > java教程 > 使用 Jackson 反序列化 JSON 时如何处理'无法识别的字段”错误?

使用 Jackson 反序列化 JSON 时如何处理'无法识别的字段”错误?

Mary-Kate Olsen
发布: 2024-11-17 07:34:03
原创
392 人浏览过

How to Handle

使用 JSON 的 Jackson:解决“无法识别的字段”错误

使用 Jackson 将 JSON 字符串转换为 Java 对象时,您可能会遇到如果 JSON 中存在无法识别的字段,则会出现错误“无法识别的字段,未标记为可忽略”。为了解决这个问题,Jackson 提供了两个选项:

JsonIgnoreProperties 注解

@JsonIgnoreProperties 注解允许您在反序列化过程中忽略 POJO 中的特定字段。例如,在您的情况下,您可以忽略“包装器”字段:

@JsonIgnoreProperties(ignoreUnknown = true)
class Wrapper { ... }
登录后复制

这将忽略任何无法识别的属性,包括“包装器”。

自定义反序列化器

如果您需要对忽略的属性进行更精细的控制,您可以创建自定义反序列化器。重写反序列化方法来处理无法识别的字段:

public class CustomDeserializer extends JsonDeserializer<Wrapper> {
    @Override
    public Wrapper deserialize(JsonParser parser, DeserializationContext context) throws IOException {
        Wrapper wrapper = new Wrapper();
        ObjectCodec codec = parser.getCodec();
        JsonToken token = parser.getCurrentToken();
        while (token != JsonToken.END_ARRAY) {
            if (token == JsonToken.START_OBJECT) {
                Student student = codec.readValue(parser, Student.class);
                wrapper.getStudents().add(student);
            }
            token = parser.nextToken();
        }
        return wrapper;
    }
}
登录后复制

然后,向 Jackson 注册自定义反序列化器:

ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new SimpleModule().addDeserializer(Wrapper.class, new CustomDeserializer()));
登录后复制

以上是使用 Jackson 反序列化 JSON 时如何处理'无法识别的字段”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板