解析 csv 时获取 urecognized 字段错误消息
Getting urecognized field error message when parsing csv
我正在尝试使用 Jackson 库将 CSV 文件转换为 JSON。我创建了类似于 CSV 文件头的 POJO class 属性。但是即使面临unrecognized field error问题.
这是我的代码
public static List<SalesValidationDetails> parseCSVFile(File file) throws IOException {
CsvMapper csvMapper = new CsvMapper();
MappingIterator<SalesValidationDetails> eachSale =
csvMapper.readerWithTypedSchemaFor(SalesValidationDetails.class).readValues(file);
return eachSale.readAll();
}
波乔 class:
@JsonPropertyOrder({ "OrderReference", "Date", "Status", "StatusNote", "NewSalePrice", "TransactionPartsNew", "Currency"})
public class SalesValidationDetails {
private String OrderReference;
private String Date;
private String Status;
private String StatusNote;
private String NewSalePrice;
private String TransactionPartsNew;
private String Currency;
public String getOrderReference() {
return OrderReference;
}
public String getDate() {
return Date;
}
public String getStatus() {
return Status;
}
public String getStatusNote() {
return StatusNote;
}
public String getNewSalePrice() {
return NewSalePrice;
}
public String getTransactionPartNew() {
return TransactionPartsNew;
}
public String getCurrency() {
return Currency;
}
public void setOrderReference(String OrderReference) {
OrderReference = OrderReference;
}
public void setDate(String Date) {
Date = Date;
}
public void setStatus(String Status) {
Status = Status;
}
public void setStatusNote(String StatusNote) {
StatusNote = StatusNote;
}
public void setNewSalePrice(String NewSalePrice) {
NewSalePrice = NewSalePrice;
}
public void setTransactionPartsNew(String TransactionPartsNew) {
TransactionPartsNew = TransactionPartsNew;
}
public void setCurrency(String Currency) {
Currency = Currency;
}
@Override
public String toString() {
return "SalesValidationDetails{" +
"orderReference='" + OrderReference + '\'' +
", date=" + Date +
", status='" + Status + '\'' +
", statusNote='" + StatusNote + '\'' +
", newSalesPrice='" + NewSalePrice + '\'' +
", transactionPartsNew='" + TransactionPartsNew + '\'' +
", currency='" + Currency + '\'' +
'}';
}
}
我的 CSV 文件如下所示:
我的错误信息:
Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "transactionPartNew" (class com.decathlon.beans.SalesValidationDetails), not marked as ignorable (7 known properties: "currency", "newSalePrice", "statusNote", "orderReference", "date", "status", "transactionPartsNew"])
at [Source: (com.fasterxml.jackson.dataformat.csv.impl.UTF8Reader); line: 1, column: 94] (through reference chain: com.decathlon.beans.SalesValidationDetails["transactionPartNew"])
谁能帮我看看这里有什么问题,我已经尝试了所有方法。
您的定居者实施错误,应该是(仅 setter 的示例):
...
public void setTransactionPartsNew(String TransactionPartsNew) {
this.TransactionPartsNew = TransactionPartsNew;
}
...
因此,您必须为对象的字段赋值。
我正在尝试使用 Jackson 库将 CSV 文件转换为 JSON。我创建了类似于 CSV 文件头的 POJO class 属性。但是即使面临unrecognized field error问题.
这是我的代码
public static List<SalesValidationDetails> parseCSVFile(File file) throws IOException {
CsvMapper csvMapper = new CsvMapper();
MappingIterator<SalesValidationDetails> eachSale =
csvMapper.readerWithTypedSchemaFor(SalesValidationDetails.class).readValues(file);
return eachSale.readAll();
}
波乔 class:
@JsonPropertyOrder({ "OrderReference", "Date", "Status", "StatusNote", "NewSalePrice", "TransactionPartsNew", "Currency"})
public class SalesValidationDetails {
private String OrderReference;
private String Date;
private String Status;
private String StatusNote;
private String NewSalePrice;
private String TransactionPartsNew;
private String Currency;
public String getOrderReference() {
return OrderReference;
}
public String getDate() {
return Date;
}
public String getStatus() {
return Status;
}
public String getStatusNote() {
return StatusNote;
}
public String getNewSalePrice() {
return NewSalePrice;
}
public String getTransactionPartNew() {
return TransactionPartsNew;
}
public String getCurrency() {
return Currency;
}
public void setOrderReference(String OrderReference) {
OrderReference = OrderReference;
}
public void setDate(String Date) {
Date = Date;
}
public void setStatus(String Status) {
Status = Status;
}
public void setStatusNote(String StatusNote) {
StatusNote = StatusNote;
}
public void setNewSalePrice(String NewSalePrice) {
NewSalePrice = NewSalePrice;
}
public void setTransactionPartsNew(String TransactionPartsNew) {
TransactionPartsNew = TransactionPartsNew;
}
public void setCurrency(String Currency) {
Currency = Currency;
}
@Override
public String toString() {
return "SalesValidationDetails{" +
"orderReference='" + OrderReference + '\'' +
", date=" + Date +
", status='" + Status + '\'' +
", statusNote='" + StatusNote + '\'' +
", newSalesPrice='" + NewSalePrice + '\'' +
", transactionPartsNew='" + TransactionPartsNew + '\'' +
", currency='" + Currency + '\'' +
'}';
}
}
我的 CSV 文件如下所示:
我的错误信息:
Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "transactionPartNew" (class com.decathlon.beans.SalesValidationDetails), not marked as ignorable (7 known properties: "currency", "newSalePrice", "statusNote", "orderReference", "date", "status", "transactionPartsNew"])
at [Source: (com.fasterxml.jackson.dataformat.csv.impl.UTF8Reader); line: 1, column: 94] (through reference chain: com.decathlon.beans.SalesValidationDetails["transactionPartNew"])
谁能帮我看看这里有什么问题,我已经尝试了所有方法。
您的定居者实施错误,应该是(仅 setter 的示例):
...
public void setTransactionPartsNew(String TransactionPartsNew) {
this.TransactionPartsNew = TransactionPartsNew;
}
...
因此,您必须为对象的字段赋值。