首页 > 解决方案 > 解析 csv 时获取 urecognized 字段错误消息

问题描述

我正在尝试使用 Jackson 库将 CSV 文件转换为 JSON。我创建了类似于 CSV 文件头的 POJO 类属性。但即使面临无法识别的字段错误问题

这是我的代码

    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();

}

Pojo类:

@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"])

有人可以帮助我这里出了什么问题,我已经尝试了所有方法。

标签: javajacksonjackson-databind

解决方案


您的定居者实施错误,应该是(仅适用于一名二传手的示例):

...

public void setTransactionPartsNew(String TransactionPartsNew) {
    this.TransactionPartsNew = TransactionPartsNew;
}
...

因此,您必须为对象的字段赋值。


推荐阅读