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

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

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

25 ответов

6 просмотров

Вроде достаточно разместить атрибут [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
Так, по любому сериализация в текстовый формат буд...

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

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

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

Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
@Aiwan что такое база образца?
Alexey
27
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
Hi Everyone! To all Are you Looking for Interview Support at the Lowest Price? Look no further! Then contact us We offer Interview Support for a low cost variety of technol...
Rambabu Nallamilli
3
верно что я могу удалить эти addq и subq т.к. со стеком никакого взаимодействия нет (исключая call)?
Michael
16
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
Что думаете об ассемблерах с завтипами? https://www.cs.cmu.edu/~rwh/papers/dtal/icfp01.pdf
smt model 1
7
Карта сайта