Отключите анализ 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?