Я пытаюсь проанализировать данные String CSV в объект Java с помощью CsvMapper. Вот схема CSV и формат данных во время отладки: [b]Метод анализа:[/b] [code] @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();
} catch (IOException e) { throw new RuntimeException("Failed to parse CSV data", e); } } [/code] [b]Когда я вручную не добавлял столбцы для заголовков, схема CSV во время отладки::[/b]* [code][CsvSchema: columns=[], header? true, skipFirst? false, comments? false, any-properties? N/A] [/code] [b]csvData во время отладки:[/b] [code]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,… [/code] [b]Класс модели Java:[/b] [code]@Getter @Setter @NoArgsConstructor @AllArgsConstructor public class TefasDataModel { @JsonProperty("FON KODU") private String fonKodu; @JsonProperty("FON UNVANI") private String fonUnvani; // Remaining fields match CSV headers. } [/code] [b]Несмотря на это, все поля выходных объектов имеют нулевые значения. Пример вывода:[/b] [code][ { "fonKodu": null, "fonUnvani": null, ... } ] [/code] [b]Что я пробовал:[/b] [list] [*]Удаление \r из данных CSV. [*]Определение CsvSchema вручную с именами столбцов, соответствующими заголовкам. [*]Преобразование csvData во входной поток. [*]Я пробовал с openCsv [/list] Когда я удаляю метод .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES), я получаю эту ошибку: [code]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"]) [/code] Что может быть причиной этой проблемы? Как я могу решить эту проблему, чтобы правильно сопоставить данные CSV с моделью?
Я пытаюсь преобразовать данные CSV в объект Java с помощью CsvMapper. Вот схема CSV и формат данных во время отладки:
Метод анализа:
private List parseData(String csvData, Class modelClass) {
try {
CsvMapper csvMapper = CsvMapper.builder()...
Я пытаюсь преобразовать данные CSV в объект Java с помощью CsvMapper. Вот схема CSV и формат данных во время отладки:
Метод анализа:
private List parseData(String csvData, Class modelClass) {
try {
CsvMapper csvMapper = CsvMapper.builder()...
Я пытаюсь проанализировать данные String CSV в объект Java с помощью CsvMapper. Вот схема CSV и формат данных во время отладки:
Метод анализа:
@SuppressWarnings( unchecked )
private List parseDataWithCsvMapper(String csvData, Class modelClass) {...
Я пытаюсь проанализировать данные String CSV в объект Java с помощью CsvMapper. Вот схема CSV и формат данных во время отладки:
Метод анализа:
@SuppressWarnings( unchecked )
private List parseDataWithCsvMapper(String csvData, Class modelClass) {...
Когда я сравниваю короткие значения, допускающие значение NULL, компилятор сначала преобразует их в целые числа, чтобы выполнить сравнение с NULL. Например, рассмотрим этот простой код: