Использую библиотеку newtonsoft json.net. В файле у меня хранится коллекция json объектов. Допустим у нас есть поврежденная json строка в одном из объектов, например:
{
"PublicationDate": "1999-04-14T00:00:00",
!error!,
"Authors": ["Vasya","Dima"],
"Location": "Moscow"
}
Могу ли я как-нибудь пропустить данный объект и перейти к парсингу следующего?
Ответ
Данные в некорректном формате не должны обрабатываться. Данные в некорректном формате JSON — это данные не в формате JSON
Правильный способ
Почините то, что выдаёт вам некорректные данные.
Костыльный способ
Если вы не можете починить источник, то конвертируйте данные в корректный формат.
Если ошибка очень простая, например, некоторые элементы принимают вид !error!, как в вашем примере, то можно натравить на исходную строку регулярное выражение.
Если ошибка сложная, то и решение сложное. Возьмите класс, разбирающий лексемы JSON из JSON.NET (JsonTextReader), модифицируйте под ожидаемую грамматику. Унаследоваться не получится, потому что весь важный код приватен. Придётся копипастить.
@VladD и другие пытаются найти обходные пути для "игнорирования" ошибки, но этот путь тупиковый, потому что для лексера нет выхода из состояния "ошибка". В этом состоянии он не знает, где он находится, и что следует дальше.
Комментариев нет:
Отправить комментарий