使用 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中文网其他相关文章!