Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当数组的一个元素具有不正确的值时,如何使Jackson不失败整个反序列化过程?_Java_Arrays_Jackson_Deserialization - Fatal编程技术网

Java 当数组的一个元素具有不正确的值时,如何使Jackson不失败整个反序列化过程?

Java 当数组的一个元素具有不正确的值时,如何使Jackson不失败整个反序列化过程?,java,arrays,jackson,deserialization,Java,Arrays,Jackson,Deserialization,我有以下类是JSON文档的POJO: public class ApiResponse { private boolean success; private List<ApiRecord> data; } 我想让Jackson将每个ApiRecord反序列化失败都视为整个反序列化过程的失败,而只是得到一个只包含有效解析对象的列表,这样“data”字段的错误元素是可以接受的(不会出现在POJO列表中),而不会阻塞其余元素 你知道怎么做吗?做一件事向mapper对象添加

我有以下类是JSON文档的POJO:

public class ApiResponse {
    private boolean success;
    private List<ApiRecord> data;
}
我想让Jackson将每个ApiRecord反序列化失败都视为整个反序列化过程的失败,而只是得到一个只包含有效解析对象的列表,这样“data”字段的错误元素是可以接受的(不会出现在POJO列表中),而不会阻塞其余元素


你知道怎么做吗?

做一件事向mapper对象添加一个属性

  ObjectMapper mapper = new ObjectMapper(); 
  mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
  var apiResponse = mapper.readValue(target, ApiResponse.class);

做一件事将一个属性添加到映射器对象

  ObjectMapper mapper = new ObjectMapper(); 
  mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
  objectMapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
  var apiResponse = mapper.readValue(target, ApiResponse.class);

我解决这个问题的方法是编写我自己的反序列化程序,在失败的情况下,该反序列化程序将返回数组元素的
null
,并将需要使用该反序列化程序的字段标记为
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(使用=SomeClass.class)

我解决这个问题的方法是编写我自己的反序列化程序,在出现故障时,它会为数组元素返回
null
,并将需要使用该反序列化程序的字段标记为
@com.fasterxml.jackson.databind.annotation.JsonDeserialize(使用=SomeClass.class)

显示的确切错误是什么?您可以使用
configure()
方法配置
ObjectMapper
,以及
SerializationFeature
反序列化Feature
类中的常量。通过这种方式,您可以根据需要关闭或启用某些功能。显示的确切错误是什么?您可以使用
configure()
方法配置
ObjectMapper
,以及
SerializationFeature
反序列化Feature
类中的常量。这样你就可以根据你想要的东西关闭或打开某些东西。这不是关于未知的属性。这是关于已知的属性的,但在反序列化过程中(通过自定义反序列化程序或默认反序列化程序),它会发现字段的值不正确,但它不会使整个反序列化过程失败,只是不会将对象添加到数组中。这不是关于未知属性。这是关于已知的属性的,但在反序列化过程中(通过自定义反序列化程序或默认反序列化程序),它会发现字段的值不正确,但并没有使整个反序列化过程失败,它只是不向数组添加对象。