Быстрая загрузка данных в blazor
От: #John Европа https://github.com/ichensky
Дата: 10.06.19 10:12
Оценка:
Здравствуйте,
Есть json с данными ~1mb, при старте программы этот json десериализуется в C# объект.
Десериализация занимает много времени. Надо этот участок кода соптимизировать.
Можно ли как-то просто сделать в .net, что бы на этапе компиляции кода json десериализовался,
превращался в объект и скомпилированная либа уже содержала эти данные?

Из идей: сгенерить класс с данными из json и положить его в проект. Но может есть более универсальное,
простое решение?
Підтримати Україну у боротьбі з країною-терористом.

https://prytulafoundation.org/
https://u24.gov.ua/

Слава Збройним Силам України!!! Героям слава!!!
Re: T4-шаблон
От: Qbit86 Кипр
Дата: 10.06.19 10:35
Оценка:
Здравствуйте, #John, Вы писали:

J>Можно ли как-то просто сделать в .net, что бы на этапе компиляции кода json десериализовался,

J>превращался в объект и скомпилированная либа уже содержала эти данные?

Можно создать T4-шаблон, для которого на этапе сборки будет отрабатывать логика по генерации (экземпляра) класса из json-представления.
Глаза у меня добрые, но рубашка — смирительная!
Re: Быстрая загрузка данных в blazor
От: RushDevion Россия  
Дата: 10.06.19 10:57
Оценка:
А какая либа для десериализации используется?
Поглядеть ее подробнее, вдруг она уже умеет генерить типизированные десериализаторы для json (Newtonsoft вроде что-то такое умел).
А так вот навскидку (только допилить, чтобы данные из JSON подставлялись в генерируемый класс)
Отредактировано 10.06.2019 11:09 RushDevion . Предыдущая версия . Еще …
Отредактировано 10.06.2019 11:07 RushDevion . Предыдущая версия .
Отредактировано 10.06.2019 11:06 RushDevion . Предыдущая версия .
Re[2]: Быстрая загрузка данных в blazor
От: Teolog  
Дата: 12.06.19 14:13
Оценка:
Здравствуйте, RushDevion, Вы писали:

RD>А какая либа для десериализации используется?

RD>Поглядеть ее подробнее, вдруг она уже умеет генерить типизированные десериализаторы для json (Newtonsoft вроде что-то такое умел).
RD>А так вот навскидку (только допилить, чтобы данные из JSON подставлялись в генерируемый класс)

Если уж извращаться, то можно дописать кодогенерацию на основе json, и зацеплять уже результат сборки
https://docs.microsoft.com/ru-ru/dotnet/api/system.reflection.emit.assemblybuilder.save?view=netframework-4.8
Вот примерно так в PreBuildStep
Отредактировано 12.06.2019 14:15 Teolog . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.