Я пытаюсь использовать Json.NET для анализа файла объектов JSON, разделенных запятыми:
{
JSON ...
},
{
JSON ...
},
{
JSON ...
}
Приведенный ниже код отлично работает, если поток не содержит разделителей (т. е. запятые выше удалены). Однако запятые создают бесконечный цикл, в котором Json.NET продолжает считывать токен «Неопределенный» даже после достижения конца файла:
using (StreamReader fReader = File.OpenText("filename.json"))
using (JsonTextReader jReader = new JsonTextReader(fReader))
{
jReader.SupportMultipleContent = true;
while (jReader.Read())
{
var jToken = JToken.ReadFrom(jReader);
if (jToken is JObject)
Console.WriteLine("JSON object: " + ((JObject)jToken).ToString());
}
}
Я попытался пропустить запятую, прочитав вперед и используя метод Skip() JsonTextReader, но это не работает: JsonTextReader, по-видимому, буферизуется вперед, съедая запятую, что вызывает несварение.
Трудно поверить, что я первый столкнусь с этой проблемой, но, несмотря на то, что я долго искал здесь, я не нашел подходящих сообщений (по крайней мере, для C# и Json.NET). Действительно ли необходимо взломать это с нуля?
ETA: Согласно комментарию Брайана Роджерса ниже, Json.NET 11.0.1 и выше обрабатывают JSON с разделителями-запятыми, поэтому вышеизложенное теперь работает нормально, запятые или нет.
SupportMultipleContent
на ридере. См. второй ответ связанного повторяющегося вопроса. - person Brian Rogers   schedule 03.02.2019