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

Добрый вечер, при сериализации игнорируются приватные поля , как это

можно исправить?

25 ответов

16 просмотров

Вроде достаточно разместить атрибут [JsonProperty]

PavelDmitrenko
Вроде достаточно разместить атрибут [JsonProperty]

c десериализацией будет сложней — скорее всего придется писать кастомную У меня были такие ситуации, чуть ли не через рефлекш приходилось делать

Слава-Україні Автор вопроса
PavelDmitrenko
Вроде достаточно разместить атрибут [JsonProperty]

Да , спасибо помогло с сереализацией , но он его не десереализует

Слава Україні
Да , спасибо помогло с сереализацией , но он его н...

да, это, согласитесь, логично — нет публичного сеттера... Один из вариантов — написание кастомной десериализации (используемый вами newtonsoft это поддерживает). В этой реализации — в зависимости от степени тяжести ситуации, вплоть до задействования рефлекшена.

PavelDmitrenko
да, это, согласитесь, логично — нет публичного сет...

Если ситуация допускает расширение существующего класса (и такое решение вообще допустимо)— можно добавить публичные методы вида SetPrivateField, в котором будут выставляться приватные значения. Это, кмк, много лучше явного опубличивания полей. Но, повторюсь, не всегда допустимо.

Слава-Україні Автор вопроса
PavelDmitrenko
да, это, согласитесь, логично — нет публичного сет...

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

Слава Україні
я думал когда сылочному типу даныых присваивается ...

Newtonsoft не настолько жесток, чтобы по-умолчанию выставлять и приватные поля (и правильно делает, что не делает этого) Так что, вероятно, это не очень элегантное решение (выставление приватных полей, запись констанс, ридонли полей и прочего) придется делать руками

Слава Україні
я думал когда сылочному типу даныых присваивается ...

кстати, последовательная сериализация/десериализация — один из подходов для клонирования ссылочных объектов (так называемый "DeepClone"), так как при десериализации никаких ссылок нет, а есть текст (json) , который надо распарсить и запихать в экземпляр класса

Elizium
https://pastebin.com/WQMRdsDX

навскидку — приведенный фрагмент вообще о другом...

Слава-Україні Автор вопроса
PavelDmitrenko
кстати, последовательная сериализация/десериализац...

Так сереалиция и десереализация же используюет рефлексию типу и поэтому очень долгая по выполнению , зачем ее использовать для клонирлвание?

Слава Україні
Так сереалиция и десереализация же используюет реф...

Ну как зачем?... Это просто ) рефлексия, не такая уж и медленная как прямо принято считать. В некоторых проектах вполне допустимый оверхед. Как еще клонировать? Через ExpressionTree — несколько быстрее, да. Но не банально. Самое, безусловно, эффективное с точки зрения производительности — это ручное копирование. Но это крайне не эффективно по времени разработки (огромное кол-во бойлерплейта), и самое главное — поддержка такой лапши получается очень сложной, а возможные (очень вероятные) ошибки по мере разрастания кодовой базы — сложно диагностируемыми.

PavelDmitrenko
Ну как зачем?... Это просто ) рефлексия, не такая ...

Сериализатор сам использует рефлексию

Elizium
Сериализатор сам использует рефлексию

да, безусловно, к чему это? Я не утверждал обратного....

PavelDmitrenko
кстати, последовательная сериализация/десериализац...

Зачем для DeepClone использовать джсон? Есть же msgpack или protobuf

PavelDmitrenko
а еще XML есть Много чего есть.

Ну так, сериализация в json и десериализация медленее будет

Phantom
Ну так, сериализация в json и десериализация медле...

Чей-та? Не вижу этому прям явных предпосылок. Как по мне - наоборот, наблюдаю некоторый оверхед

Phantom
screenshot

Ну вы взяли какой-то определенный сериализатор/десериализатор, неизвестный набор данных, график... Ну ни о чем, простите... это как мне показывают графики как постгресс быстрее mssql, или оракл медленные mysql — ни контекста, ничего. Найдите какой-нибудь быстрый сериализатор джейсона, на одном свет клином не сошелся...

PavelDmitrenko
Ну вы взяли какой-то определенный сериализатор/дес...

Так, по любому сериализация в текстовый формат будет медленее, чем в массив байт

Phantom
Так, по любому сериализация в текстовый формат буд...

Возможно, я не призываю использовать json как прокси для клонирования объектов. Просто обозначил это как один из возможных вариантов.

Phantom
Так, по любому сериализация в текстовый формат буд...

и да — спасибо за информацию, попробую в случае критичных требований к производительности

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта