Это один из вариантов использования, я предусматриваемых для моего собственного парсера/десериализации.
Я недавно сделал простой пример (путем подачи парсер с JSON текстом, который читается через в StreamReader) из десериализации этой формы JSON:
{
"fathers" : [
{
"id" : 0,
"married" : true,
"name" : "John Lee",
"sons" : [
{
"age" : 15,
"name" : "Ronald"
}
],
"daughters" : [
{
"age" : 7,
"name" : "Amy"
},
{
"age" : 29,
"name" : "Carol"
},
{
"age" : 14,
"name" : "Barbara"
}
]
},
{
"id" : 1,
"married" : false,
"name" : "Kenneth Gonzalez",
"sons" : [
],
"daughters" : [
]
},
{
"id" : 2,
"married" : false,
"name" : "Larry Lee",
"sons" : [
{
"age" : 4,
"name" : "Anthony"
},
{
"age" : 2,
"name" : "Donald"
}
],
"daughters" : [
{
"age" : 7,
"name" : "Elizabeth"
},
{
"age" : 15,
"name" : "Betty"
}
]
},
//(... etc)
]
}
... в эту Pocos:
https://github.com/ysharplanguage/FastJsonParser#POCOs
(то есть, в частности: "FathersData", "Отец", "Сын", "дочка")
Этот образец также представляет:
(1) образец фильтр по индексу относительного пункта в [] массиве отца (например, для извлечения только первые 10), и
(2), как заполнить динамически свойство дочерея отца , так как десериализация их соответствующих отцов возвращает (то есть, благодаря делегату, что вызывающий абонент переходит к методу анализа парсера для целей обратного вызова).
Для остальных битов, см:
ParserTests.cs : static void FilteredFatherStreamTestDaughterMaidenNamesFixup()
(строки #829 к #904)
спектакля я наблюдать на мой скромный ноутбук (*) для разбора некоторые ~ 12MB до ~ 180 Мбайт файлов JSON и десериализация произвольного подмножества их содержимого в POCOs
(или в свободно-типизированные словари (только пары (строки, объекта) ключ/значение) также поддерживаются)
находится в любом месте стадиона от ~ 20 МБ/с до 40 МБ/с (**).
(например, ~ 300 миллисекунд в случае файла 12MB JSON, в Pocos)
Более подробная информация доступны здесь:
https://github.com/ysharplanguage/FastJsonParser#Performance
«HTH,
(*) (работает Win7 64bit @ 2.5Ghz)
(**) (пропускная способность вполне зависит от входной формы/сложности JSON, например, под-объектов n глубина esting и другие факторы)
'JObject.Parse' – I4V
Придётся попытался взглянуть на Newtonsoft JSON (https://json.codeplex.com/) – Zaksh
@Zaksh Я пытаюсь же библиотеку Json.NET – Seenu