Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
107 / 13 / 7
Регистрация: 06.07.2013
Сообщений: 268

Newtonsoft.Json как правильно задать атрибуты сериализации?

23.01.2018, 15:26. Показов 6655. Ответов 7

Студворк — интернет-сервис помощи студентам
JSON:
JSON
1
2
3
4
5
6
7
8
9
10
11
{
    "id": "42",
    "name": "СмыслВсего",
    "descriptions": [
        {
        "type": "html",
        "value": "Космические корабли бороздят просторы большого театра",
        "color": "ffffff"
        }
    ]
}
Пример атрибутов которые я использовал:
C#
1
2
3
4
5
        [JsonProperty("id")]
        public int Id { get; set; }
 
        [JsonProperty("name")]
        public string Name { get; set; }
Как правильно задать путь до свойства value в descriptions?

Добавлено через 51 минуту
На данный момент реализовал без атрибутов так:
C#
1
2
3
4
                itemInv.Description = descriptList[i]
                    .First()["descriptions"]
                    .First()["value"]
                    .ToString();
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2018, 15:26
Ответы с готовыми решениями:

Атрибуты сериализации и наследование
Если в базовом классе есть метод , помеченный атрибутом , скажем , OnSerialized , и ты переопределяешь его в наследнике , нужно ли снова...

Newtonsoft.Json JArray в JObject
Здравствуйте. Весь день бился, и гуглил, так ничего и не нашел. Никак не могу получить JObject из JArray. При попытке преобразования выдает...

Newtonsoft.Json.JsonConvert Де-/Сериализация .NET и JS
Сериализовали мы допустим какой-то класс в .NET методом SerializeObject. Что мы получим в JS при его десериализации? Или это невозможно?

7
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
23.01.2018, 15:28
Цитата Сообщение от ATop Посмотреть сообщение
Пример атрибутов которые я использовал:
ATop, исходя из того, что выдает генератор по вашему Json, могу предположить, что типа свойства Name - это коллекция.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public class Description
{
    public string type { get; set; }
    public string value { get; set; }
    public string color { get; set; }
}
 
public class RootObject
{
    public string id { get; set; }
    public string name { get; set; }
    public List<Description> descriptions { get; set; }
}
0
107 / 13 / 7
Регистрация: 06.07.2013
Сообщений: 268
23.01.2018, 15:38  [ТС]
Мне не нужны все свойства Description только value и плодить лишние классы в такой ситуации немного странно.

Цитата Сообщение от insite2012 Посмотреть сообщение
могу предположить, что типа свойства Name - это коллекция.
Я слышал что в VS есть генератор типов из JSON но никогда не использовал. А вашу фразу про свойство Name я к сожалению не понял, извините.

Добавлено через 7 минут
Я расчитывал на нечто подобное:
C#
1
2
        [JsonProperty("descriptions/value")]
        public string Description { get; set; }
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
23.01.2018, 15:42
Цитата Сообщение от ATop Посмотреть сообщение
и плодить лишние классы в такой ситуации немного странно
Ну раз классы лишние, то не используйте их. Есть JObject для таких как вы...

C#
1
2
3
4
5
            JObject js = JObject.Parse("{\"id\": \"42\", \"name\": \"СмыслВсего\", \"descriptions\": [ {\"type\": \"html\",\"value\": \"Космические корабли бороздят просторы большого театра\",\"color\": \"ffffff\"}]}");
 
            string id = js["id"].ToString();
            string name = js["name"].ToString();
            string val = js["descriptions"][0]["value"].ToString();
1
107 / 13 / 7
Регистрация: 06.07.2013
Сообщений: 268
23.01.2018, 15:44  [ТС]
Цитата Сообщение от insite2012 Посмотреть сообщение
что типа свойства Name - это коллекция
Видимо вы имели в виду свойство descriptions просто опечатались, да коллекция, но во всех JSON которые я получал там всегда один элемент.
0
-22 / 1 / 2
Регистрация: 18.12.2015
Сообщений: 120
06.03.2018, 18:26
как распарсить с помощью библиотеки :
C#
1
2
3
 
"name":{
     "$":"cxexrdgrupze.ru"
Знак доллар как его обозначить при парсинге json? Пробовал вот так:

C#
1
2
3
4
5
6
 
public class Name
    {
        [JsonProperty("$")]                    // здесь пытался поставить знак доллара
        public string _ { get; set; }
    }
не получилось..
0
 Аватар для агерон
447 / 300 / 65
Регистрация: 12.10.2009
Сообщений: 1,162
06.03.2018, 20:11
сайт http://json2csharp.com/, а потом этот код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Description
{
    public string type { get; set; }
    public string value { get; set; }
    public string color { get; set; }
}
 
public class RootObject
{
    public string id { get; set; }
    public string name { get; set; }
    public List<Description> descriptions { get; set; }
}
 
var content = @"{"id": "42", "name": "СмыслВсего", "descriptions": [{"type": "html", "value": "Космические корабли бороздят просторы большого театра", "color": "ffffff"}]}"
JsonConvert.DeserializeObject<BaseResponse>(content);
Добавлено через 30 минут
знак "$" в json данных играет роль спец разделителя, он используется в основном в именах типов данных которые определенным образом записываются парсерами, по-этому если вам нужен знак "$" в json данных то желательно его экранировать Url кодированием
1
-22 / 1 / 2
Регистрация: 18.12.2015
Сообщений: 120
06.03.2018, 23:40
Можете на этом примере показать?

[JsonProperty("$")] // здесь пытался поставить знак доллара
public string _ { get; set; }

Я даже ветку отдельную создавал

Добавлено через 2 часа 54 минуты
Решил вопрос, экранирование не понадобилось
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2018, 23:40
Помогаю со студенческими работами здесь

Cannot access child value on Newtonsoft.Json.Linq.JValue
добрый день может кто подскажет string pathToTxt = MyDocuments + &quot;SaleInsert.json&quot;; string lines =...

Десериализация Json - как правильно?
Накатал простой пример - using System; using Newtonsoft.Json; using Newtonsoft; namespace json_test { class...

Как правильно десериализовать ответ в Json
Как правильно десериализовать ответ в Json (С вложенными классами) используя библиотеку Newtonsoft.Json? { &quot;success&quot;:...

Как правильно спарсить JSON ответ?
Всем привет! Помогите, пожалуйста, с обработкой JSON ответа. Я привёл часть файла, на самом деле, в data порядка 100+ объектов. { ...

Как правильно задать фильтр?
В таблице fire есть Enum поле имеющее 2 значения &quot;Лок&quot; и &quot;&quot;. На форме сделал ComboBox с этими значениями и в событии...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
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