Анализ CSV возвращает нулевые значения для всех полей при анализе данных CSV.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Анализ CSV возвращает нулевые значения для всех полей при анализе данных CSV.

Сообщение Anonymous »

Я пытаюсь проанализировать данные String CSV в объект Java с помощью CsvMapper. Вот схема CSV и формат данных во время отладки:
Метод анализа:

Код: Выделить всё

     @SuppressWarnings("unchecked")
private  List parseDataWithCsvMapper(String csvData, Class modelClass) {
try {
CsvMapper csvMapper = CsvMapper.builder()
.enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES)
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.build();

CsvSchema schema = CsvSchema.builder()
.addColumn("FON KODU")
.addColumn("FON UNVANI")
...
.build()
.withHeader();

Reader reader = new StringReader(csvData);
return (List) csvMapper
.readerFor(modelClass)
.with(schema)
.readValues(reader)
.readAll();

} catch (IOException e) {
throw new RuntimeException("Failed to parse CSV data", e);
}
}
Когда я вручную не добавлял столбцы для заголовков, схема CSV во время отладки::*

Код: Выделить всё

[CsvSchema: columns=[], header? true, skipFirst? false, comments? false, any-properties? N/A]
csvData во время отладки:

Код: Выделить всё

FON KODU,FON UNVANI,FON ISIN KODU,FON OPERATÖR KODU,PARA BİRİMİ,İŞLEM BAŞLANGIÇ SAATİ,…
AAK,ATA PORTFÖY ÇOKLU VARLIK DEĞİŞKEN FON,TRMAF1WWWWW4,ATA,TL,09:00,17:30,…
AAL,ATA PORTFÖY PARA PİYASASI (TL) FONU,TRMAALWWWWW5,ATA,TL,09:00,13:30,…
Класс модели Java:

Код: Выделить всё

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class TefasDataModel {
@JsonProperty("FON KODU")
private String fonKodu;
@JsonProperty("FON UNVANI")
private String fonUnvani;
// Remaining fields match CSV headers.
}
Несмотря на это, все поля выходных объектов имеют нулевые значения. Пример вывода:

Код: Выделить всё

[
{ "fonKodu": null, "fonUnvani": null, ... }
]
Что я пробовал:
  • Удаление \r из данных CSV.
  • Определение CsvSchema вручную с именами столбцов, соответствующими
    заголовкам.
  • Преобразование csvData во входной поток.
  • Я пробовал с openCsv
Когда я удаляю метод .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES), я получаю эту ошибку:

Код: Выделить всё

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "FON KODU" (class com.isuite.services.datajet.job.TefasDataModel), not marked as ignorable (24 known properties: "fonSatisValorAtlatmaSaati", "yarimGunIptalSaati", "fiyatMarjOrani", "fonSatisFiyatValor", "geriAlisAdetKati", "fonIsinKodu", "fonGeriAlisFiyatValor", "satisAdetKati", "iptalSonSaati", "minSatisAdet", "fonGeriAlisValor", "islemBaslangicSaati", "maksGeriAlisAdet", "fonSatisValor", "fonKodu", "islemBitisSaati", "fonGeriAlisValorAtlatmaSaati", "fonOperatorKodu", "fonUnvani", "maksSatisAdet", "minGeriAlisAdet", "yarimGunFonGeriAlisValorAtlSaati", "paraBirimi", "yarimGunFonSatisValorAtlSaati"])
at [Source: (StringReader); line: 2, column: 5] (through reference chain: com.isuite.services.datajet.job.TefasDataModel["FON KODU"])
Что может быть причиной этой проблемы? Как я могу решить эту проблему, чтобы правильно сопоставить данные CSV с моделью?

Подробнее здесь: https://stackoverflow.com/questions/793 ... g-csv-data
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»