Java 如何使用SimpleFlatMapper将前缀为CSV的列别名到映射? 背景
使用SimpleFlatMapper sfm csv 6.0.3 示例CSV: 波乔Java 如何使用SimpleFlatMapper将前缀为CSV的列别名到映射? 背景,java,csv,simpleflatmapper,Java,Csv,Simpleflatmapper,使用SimpleFlatMapper sfm csv 6.0.3 示例CSV: 波乔 类项目{ 私有字符串名称; 私有字符串引用; 私有映射前缀字段; //…建设者、接受者等。 } 简化代码 前缀“pf.”是用石头砌成的,如果属性名为“pf”,则所有操作都有效: .addAlias只接受Stringparams,因此类似的内容不起作用: 让我走上了正确的轨道 addColumnProperty接受对象的变量。您可以传入一个重命名属性,该属性接受用于简单列重命名的字符串参数或函数重命名函数。
类项目{
私有字符串名称;
私有字符串引用;
私有映射前缀字段;
//…建设者、接受者等。
}
简化代码
前缀“pf.”是用石头砌成的,如果属性名为“pf”,则所有操作都有效:
只接受.addAlias
params,因此类似的内容不起作用:String
addColumnProperty
接受对象的变量。您可以传入一个重命名属性
,该属性接受用于简单列重命名的字符串
参数或函数重命名函数
。将它们放在一起,如下所示:
final CsvMapper mapper=CsvMapperFactory.newInstance()
.addAlias(“名称”、“项目名称”)
.addAlias(“参考号”;“参考号”)
.addColumnProperty(
column->column.getName().startsWith(“pf”),
新的重命名属性(columnName->columnName.replace(“pf.”,“prefixedFields_”))
.newMapper(项类);
|------|-------------|----------------|----------------|------------------|
| name | reference # | pf.first thing | pf.secondThing | pf.another.thing |
|======|=============|================|================|==================|
| foo | eb2e23c0d6a | a value here | | another value |
|------|-------------|----------------|----------------|------------------|
| bar | 0a4bba4c1d0 | values | all | throughout |
|------|-------------|----------------|----------------|------------------|
final CsvMapper<Item> mapper = CsvMapperFactory.newInstance()
.addAlias("name", "itemName")
.addAlias("reference #", "reference")
.newMapper(Item.class);
return CsvParser.mapWith(mapper)
.stream(file, items -> items.collect(List.collector()));
firstRowItem.getPrefixedFields() == ImmutableMap.of(
"first thing", "a value here",
"another.thing", "another value")
secondRowItem.getPrefixedFields() == ImmutableMap.of(
"first thing", "values",
"secondThing", "all",
"another.thing", "throughout")
class Item {
// ...
private Map<String, String> pf;
// ...
}
.addAlias("pf.", "prefixedFields")