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

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

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

25 ответов

8 просмотров

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

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

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
32
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
25
Книга Юрова В.И пойдёт для обучения?
Botsman
24
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
> Примечательно, что новый владелец удаляет из GitHub любые жалобы, указывающие на подозрительную активность или смену владельца, и, видимо, рассчитывает на то, что пользовате...
Alex Sherbakov
1
Подскажите пожалуйста, а я могу вот такую штуку использовать? rpc, только реализованное в реббите https://www.rabbitmq.com/tutorials/tutorial-six-php ( или https://habr.com/ru...
Artyom
11
а мы ещё не созрели до того, чтобы создать отдельный чатик про настройку редакторов?
Cheese Syrowiecki
16
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Всем привет! У меня почему-то по-разному отображается TListView в Debug и Release режимах (FireMonkey)! При запуске под Win приложения TListView заливается программо. в Debug ...
Александр COM
8
Ладно, ещё тупого спрошу. Код должен банально вывести значение регистра на консоль, на деле же не выводя ничего, просто оставляя нерабочую консоль (открыта, ничего не написан...
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
25
Карта сайта