Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
6 / 5 / 3
Регистрация: 04.06.2015
Сообщений: 250
Записей в блоге: 1

Сереализация отдельных полей класса в NewtonSoft.Json

04.04.2019, 14:36. Показов 4725. Ответов 2

Студворк — интернет-сервис помощи студентам
Добрый день коллеги!
Есть несколько разных JSON пакетов с одинаковым именем ключа, но в для разных пакетов - разным набором значений внутри.
Для примера:
1:
JSON
1
{"parameters":{"param1":"12345678"},"Id":"Login","ver":1}
2:
JSON
1
{"parameters":{"type":"demo","data":{"sum":1000,"name":"Admin","password":"123456"}},"Id":"Document","ver":1}
3:
JSON
1
{"parameters":{"func":"x_ray","limit":1,"offset":0},"Id":"xRay","ver":1}
Т.е. имеется один parameters, но внутри может быть с разным форматом...
Я пытаюсь сделать один класс Parameters (универсальный) со всеми возможными для разных JSON-пакетов, полями. Т.е. так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class Parameters
{
            public string param1 { get; set; }
            public string type { get; set; }
            public string func { get; set; }
            public Data data { get; set; }
            public uint limit { get; set; }
            public uint offset { get; set; }
 
            public class Data
            {
                public ulong sum { get; set; }
                public string name { get; set; }
                public string password { get; set; }
 
                public Data()
                { }
 
                public Data(ulong s, string n, string p)
                {
                    sum = s; name = n; password = p;
                }
            }
 
            public Parameters()
            { }
 
            public Parameters(string p)
            {
                param1 = p;
            }
 
            public Parameters(string docType, Data d)
            {
                type = docType; data = d;
            }
 
            public Parameters(string f, uint lim, uint Offset)
            {
                func = f; limit = lim; offset = Offset;
            }
}
Но как при этом сериализовать так, что бы при формировании одного пакета JSON, в него не попадали те поля класса Parameters, которые не нужны для этого пакета? Пробовал создавать (например для первого варианта) экземпляр класса Parameters через конструктор public Parameters(string p) ибо для первого варианта, в params должно быть только поле "param1". Но в сериализованный пакет все равно попадают остальные, непроинициализированные поля класса... Ну это логично. А вот как таки сделать этот класс одним универсальным, но иметь возможность указать какие поля для какой сериализации следует игнорировать? Или же так в принципе сделать не получится, и придется для каждого случая отдельные вариации класса Parameters писать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.04.2019, 14:36
Ответы с готовыми решениями:

newtonsoft.json заполнение полей при десериализации своими значениями
Добрый день! Нужен совет. Есть класс для десериализации: class Order { public string Pair { get;...

Null reference при десерелизации JSON (Newtonsoft.Json)
Задача: достать из JSON ответа Название фирмы. Использую библиотеку Newtonsoft.Json. Сам код: //Выполняю запрос HttpWebRequest...

Парсинг JSON с short.pub посредством NewtonSoft.Json
Доброго времени суток. Имеется сокращалка сайтов short.pub, у которой есть API, который возвращает JSON, содержащий сокращённые ссылки...

2
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
04.04.2019, 15:11
https://www.newtonsoft.com/jso... Ignore.htm
https://www.newtonsoft.com/jso... Ignore.htm
1
6 / 5 / 3
Регистрация: 04.06.2015
Сообщений: 250
Записей в блоге: 1
04.04.2019, 15:27  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
https://www.newtonsoft.com/json/help...lingIgnore.htm
Ого! Спасибо за оперативность! Вторая ссылка - прям то, что нужно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.04.2019, 15:27
Помогаю со студенческими работами здесь

Чтение JSON-файла с помощью Newtonsoft.Json
И так, у нас есть JSon-файл вот такого типа: { "objects": { "minecraft/sounds/entity/rabbit/attack2.ogg": { ...

Сереализация объекта в JSON и отправка на сервер
Всем привет хочу конвертировать объект в json и отправить его на сервер не знаю если моё решение верно. Помогите советом, заранее спасибо! ...

Разбор JSON, используя Newtonsoft.Json
Добрый день! Подскажите пожалуйста, как десериализовать JSON-ответ следующего вида {"result": ...

Обработка JSON через Newtonsoft.JSON
Всем привет. Частично умею работать с этой либой, но возник вопрос как получить данные из такого ответа: { "data": , ...

[Newtonsoft.Json] Парсинг JSON-ответа
Здравствуйте уважаемые участники сообщества "CyberForum" ! У меня возникла небольшая проблема. Я перелопатил кучу форумов и 15 страниц...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru