170 похожих чатов

Ещё один тривиальный вопрос, но без конкретного ответа в Гугле. Как

лучше трансформировать дженерик объект в обычный JSON в современном .NET?
Нужен подход именно с рефлексией, а быстрый новый генератор не подходит, потому как типы для серилизации не определены.

Самое очевидное это использовать конвертацию объекта в Stream асинхронным методом.
public static Task SerializeAsync<TValue>(
Stream utf8Json,
TValue value,
JsonSerializerOptions? options = null,
CancellationToken cancellationToken = default)

Но как после этого трансформировать Stream в строку нормальным образом?)


PS: Можно сделать синхронно, но я полагаю, что для объектов которые могут выдать строку длинной более 250000 символов это не лучший вариант.
var json = JsonSerializer.Serialize(jenericObj);

15 ответов

17 просмотров

Всмысле типы не определены

Ivan-Pavlov Автор вопроса
Oleg Gavrilov
Всмысле типы не определены

Типы объектов для серилизации могут быть любыми, иначе можно было бы использовать source generation для System.Text.Json.JsonSerializer.

обычно дело обстоит так. ты пишешь сериализатор для основного типа, а то, что зависит от генерик параметров - делегируешь в их сериализаторы

STJ вполне себе справляется в рефлективном режиме. Никто тебя не заставляет включать SourceGen режим

Ivan Pavlov
Типы объектов для серилизации могут быть любыми, и...

Ты хотя бы попробовал? Или просто подумал что это очень сложно для сериализатора (нет) и пришел сюда?

последняя строка решает твою проблему

Ivan Balanar
а пример такого можно?

да вроде все так работают, не? List<T>: ListSerializer.Serialize(List<T> list) { for (var i = 0; i < list.Count; i++) { SerializeContext.GetSerializer<T> () .Serialize(list[i]) } }

Anatoly
да вроде все так работают, не? List<T>: ListSeri...

я не веб программер и сериализацией не занимаюсь :) но для курса озоновского может понадобиться.

Ivan Balanar
я не веб программер и сериализацией не занимаюсь :...

в случае с жсоном там будет .StartArray перед циклом, потом endArray после цикла в случае с msgpack - в начало надо будет положить длину, от формата зависит, но общий смысл примерно такой

Ivan Balanar
я не веб программер и сериализацией не занимаюсь :...

Если для STJ - можешь сюда глянуть https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/converters-how-to?pivots=dotnet-7-0 Или ты обобщенно спрашиваешь?

Ivan Balanar
я не веб программер и сериализацией не занимаюсь :...

https://github.com/progaudi/MsgPack.Light/blob/master/src/msgpack.light/Converters/ArrayConverter.cs

Похожие вопросы

Обсуждают сегодня

Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
а как ловят такое ghci> res <- getPos2 urlt 0 (alist !! 0) 200 ghci> res SearchAtom (Search "www.google.com" "/search?q=" "Haskell") "haskell.org" (SearchTS [(2024-05-06 07:...
Fedor
14
короче сгенерила мне эта штука код на ассемблере: struc string val { common local .value dq .value .value: if ~val eq db val end if db 0 } fo...
Vi Chapmann Chapmann
12
Есть тут те у кого дети есть + 2 работы + в зал ходят + в семейной жизни все хорошо?
Abdul-Aziz M.
13
Всем привет! Массив вводится с клавиатуры, кол-во элементов неизвестно, поэтому я указал arr db 100 dup(?) С нахождением максимума проблем нет, а вот минимум почему-то всегд...
En Vind Av Sorg
11
кто шарит: mattermost отслеживает что ты на пк запускаешь?
Valentin
13
Помогите, пожалуйста, делаю программу для для подсчёта корней квадратного уравнения, знаю, что есть куча недочётов, недоработок, но основная проблема в том, что почему-то при ...
NYC
13
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
Всем привет! Стоит задачка, выбрать из выпадающего списка конкретный цвет. Пока реализовал через активацию контрола списка и выбора несколькими нажатиями стрелки вправо до нуж...
Роман.С
9
Карта сайта