3 回答
TA贡献1833条经验 获得超4个赞
通常情况下,您的问题的解决方案是:注意异常消息。
这是您包含的异常消息:
com.fasterxml.jackson.databind.JsonMappingException:无法从字符串值('Email;FirstName;LastName')实例化类型 [简单类型,作者类] 的值;没有单字符串构造函数/工厂方法
这是您问题的 3 步解决方案:
第 1 步:在异常消息中注意这一点:没有单字符串构造函数/工厂方法
第 2 步:查看Author您包含的课程。请注意,它既不包含构造函数,也不包含仅接受一个字符串作为参数的工厂方法。
第 3 步:将构造函数添加到Author接受单个字符串作为参数的类。
这是一些代码(这不是最终代码,您需要添加错误处理):
public Author(final String line)
{
final String[] lineContentArray = line.split(";");
// Note: consider using the standard java field naming convention.
email = line[0];
firstName = line[1];
lastName = line[2];
}
TA贡献1788条经验 获得超4个赞
CsvSchema bootstrapSchema = CsvSchema.emptySchema();
bootstrapSchema.withColumnSeparator(';').withoutQuoteChar();
我不确定这部分 - 它不是构建器模式。
尝试
CsvSchema bootstrapSchema = CsvSchema.emptySchema().bootstrapSchema.withColumnSeparator(';').withoutQuoteChar();
反而。
TA贡献1851条经验 获得超3个赞
接受的答案确实允许根据异常消息的建议解决 OP 问题。但是,使用的重点CSVMapper是不要为分隔符周围的拆分和字段分配编写代码。这就是lib应该做的。
当我遇到同样的问题时,我挖掘了一下,发现了以下内容。这完全是关于使用typedSchemaForwhere typeis the target class。确实有点令人不安,必须将typeas 传递给映射器和模式。
ObjectReader objectReader() {
CsvMapper mapper = new CsvMapper();
CsvSchema schema = schema(mapper);
return mapper.readerFor(type).with(schema);
}
CsvSchema schema(CsvMapper mapper) {
return mapper.typedSchemaFor(type)
.withColumnSeparator(';')
.withoutHeader()
.withoutQuoteChar();
}
添加回答
举报
