Отключите анализ JSV в ServiceStack.Text.CsvReader

Я пытаюсь использовать ServiceStack.Text для десериализации некоторых данных CSV. Это работает, за исключением некоторых строковых значений, которые начинаются с квадратных скобок. Некоторые простые тестовые данные, которые воспроизводят поведение, выглядят так:

Name,Whatever,Id
Bill,[Foo] Bar,1234

Допустим, мы десериализовали этот класс:

public class Thing
{
    public string Name { get; set; }
    public string Whatever { get; set; }
    public int Id { get; set; }
}

Из-за этого кода в CsvReader открывающая квадратная скобка запускает некоторую специальную логику, которая пытается превратить значение Whither в список. Закрывающая квадратная скобка затем обрабатывается как конец этого значения, и в итоге она пытается проанализировать Bar как int, поскольку следующее поле является int.

Кажется, что есть способ сказать CsvReader "здесь нет JSV", но я не могу найти способ сделать это. Было бы полезно заключить в кавычки значение, но я не могу контролировать исходные данные. Я мог бы сделать некоторую предварительную обработку и процитировать все эти значения, но... тьфу.

Я попытался установить JsConfig.DeSerializeFn, но это уже было проанализировано ParseFields задолго до того, как мы перейдем к части десериализации.

Есть ли способ заставить его перестать воспринимать открывающую квадратную скобку как начало списка? Я использую неправильную библиотеку для анализа простых данных CSV?

0 ответов

Другие вопросы по тегам