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

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

04.04.2019, 14:36. Показов 4627. Ответов 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,569
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
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru