使用Jackson Java时如何跳过CSV中的失败字段?

时间:2018-08-16 14:00:21

标签: java csv jackson

我无法将数据从CSV导入到我的项目中。 如果数据失败,我将得到RuntimeJsonMappingException。 对我来说,这不是必须的,我可以跳过这些失败的数据。但是我没有找到解决方案。 我尝试设置一些JsonParser.Feature,但对我来说不起作用。

Jackson版本是2.8.11

对于反序列化,我使用以下代码:

public <T> Iterable<T> deserialize(Class<T> clazz, String csv,List<String> possibleHeaderStarts ) {

        CsvMapper csvMapper = new CsvMapper();
        CsvSchema csvSchema = csvMapper.typedSchemaFor(clazz);
        csvSchema = csvSchema.withSkipFirstDataRow( isSkipFirstDataRow( csv, possibleHeaderStarts ) );

        MappingIterator<T> it;
        try {
            it = csvMapper.reader(clazz).with(csvSchema).readValues(csv);
        } catch (IOException e) {
            throw new IllegalArgumentException("Can't parse CSV", e);
        }

        return () -> it; // convert iterator to iterable by instantiating an anonymous class
    }

有什么想法吗?

StackTrace:

  

com.fasterxml.jackson.databind.RuntimeJsonMappingException:无法   从字符串“ er2345”反序列化类型java.lang.Integer的值:否   有效的Integer值,位于[来源:java.io.StringReader@25bb4fce;   第3行,第38列](通过参考链:   com.mypackage.MyClass [“ myField”])

0 个答案:

没有答案