Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/53: Рейтинг темы: голосов - 53, средняя оценка - 4.64
 Аватар для eppi
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 108

Массив Json в Dictionary

07.12.2019, 22:58. Показов 11512. Ответов 21

Студворк — интернет-сервис помощи студентам
Господа, прошу помочь со следующей проблемой:

Допустим, у к нам приходит массив из json:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 [
    {
      "Type": "Action",
      "Name": "Some",
      "Caption": "Continue",
      "IsRequired": false
    },
    {
      "Type": "Action",
      "Name": "SomeName",
      "Caption": "Finish",
      "Tooltip": "Test",
      "IsRequired": true
    }
  ]
И мне бы хотелось его видеть в формате Dictionary<string, object>, что бы по ключам можно было выполнять операции над значениями, с учетом того, что массивов может быть больше.
Пробовал разные способы дессериализации вплоть до "самого рабочего":
C#
1
2
 var list = JsonConvert.DeserializeObject<List<KeyValuePair<string, string>>>(obj)
               .ToDictionary(k=>k.Key, v=>v.Value);
но нет, не получается.

Заранее благодарю за помощь
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.12.2019, 22:58
Ответы с готовыми решениями:

Dictionary to json в формате name, value
Вечер добрый. Может кто нибудь подсказать как конвертировать словарь в такой вид: Если использовать стандартные средства он получается...

Проинициализировать значениями dictionary вложенный в dictionary
Народ, помогите, как проинициализировать значениями такую конструкцию: Dictionary &lt;int,Dictionary&lt;string, int&gt;&gt;

Dictionary или простой массив?
Есть массив данных в несколько десятков тысяч единиц с уникальными идентификаторами, в каждой единице много информации - несколько строк,...

21
3 / 3 / 0
Регистрация: 04.06.2015
Сообщений: 56
12.03.2021, 11:50
Студворк — интернет-сервис помощи студентам
Я в общем-то разобрался, мне нужно было получать из json'a словарь, по принципу Dictionary<string, object>.
Но если есть идеи, как улучшить вот это, буду рад:

C#
1
2
3
4
5
6
7
8
9
10
11
        public static IDictionary<string, object> ToDictionary(string json)
        {
            var result = JsonConvert.DeserializeObject<Dictionary<string, object>>(json);
 
            var keys = result.Keys.Where(key => result[key] != null).Where(key => result[key].ToString().StartsWith("{\r\n  \""));
 
            foreach (var key in keys.ToList())
                result[key] = ToDictionary(result[key].ToString());
 
            return result;
        }

Мне очень не нравиться, проверка на "начинается с"... Литералы, ну я стараюсь, не хардкодить...

Добавлено через 3 минуты
Отдавать на фронт, в виде словаря. Это перечисление свойств/полей объекта, с которым происходило взаимодействие.

Аля сравнивание результата, до изменения и после. Операций много и типов соответственно еще больше. Большинство типов имеют комплексный вид, типо свойство, это какой-то тип тоже (не базовый).
0
Эксперт .NET
 Аватар для Usaga
14367 / 9468 / 1360
Регистрация: 21.01.2016
Сообщений: 35,718
12.03.2021, 12:15
SilverWolf, так это дерево получается, а не словарь. Вы не пробовали этот JSON десериализовать в дерево?

Добавлено через 8 минут
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
using System;
 
using Newtonsoft.Json;
 
namespace ConsoleApp1
{
    class Node
    {
        public string Value { get; set; }
 
        public Node[] Children { get; set; }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            var str = "[{Value: 1, Children: [{Value: \"John\"},{Value: \"Billy\", Children: [{Value: 33}]}]}]";
 
            var tree = JsonConvert.DeserializeObject<Node[]>(str);
 
            Console.WriteLine(tree.Length);
 
            Console.ReadLine();
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.03.2021, 12:15

Массив в качестве значения в dictionary
Здравствуйте, господа программисты. прошу вашей помощи. Имею следующую конструкцию Dictionary&lt;Id, Char&gt; Ids = new...

Двумерный массив в Dictionary вместо TValue
Здравствуйте, подскажите, пожалуйста, можно ли создать вот такой словарь? Dictionary&lt;Bitmap, string&gt; dict = new...

Не понятно почему не заполняется МАССИВ Dictionary
Вот когда я делаю так: Dictionary&lt;string, int&gt; dic; dic = new Dictionary&lt;string, int&gt;() dic.add(&quot;123&quot;, 123); ...

Как прочесть массив из словаря (Dictionary)
У меня есть словарь, состоящий из одной пары: число int и массив float. Я не могу понять как мне прочитать значения float по индексу. ...

Извлечь массив значений из Dictionary с помощью массива ключей
Как можно извлечь из экземпляра Dictionary массив значений при помощи имеющегося массива соответствующих ключей?


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
Сукцессия 20. Война автоботов. Делаем ставки. Лёд против "пш-пш!".
anaschu 11.07.2026
Битва ИИ в ризосфере: Как мы скрестили жесткие ОДУ, закон Фика и «подземный шантаж» Уважаемые коллеги! Хочу поделиться уникальным опытом ведения междисциплинарной компьютерной разработки. Прямо. . .
Сукцессия 19. Какие выводы я сделал из модели? Часть 2.Внутримикоризный стехиометрический буфер и хроно-дискретные зоны экспансии
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования
Сукцессия 18. Какие выводы я сделал из войны грибов с деревьями? Часть 1- рассказ и немного про термины
anaschu 11.07.2026
Био-Инженерный Ликбез: Архитектура Модели Ризосферы Математический аппарат моделирования Система ОДУ описывает динамику изменения массы различных компонентов системы во времени. Ключевой. . .
Просветление в 5 секунд
kumehtar 10.07.2026
Андрей Веретенников выдал фразу недавно: "Вам не обязательно кем-то себя считать"
Эксперимент с картинкой-обложкой на CodinGame
Adler 10.07.2026
Решил на днях провести эксперимент. У меня есть аккаунт на CodinGame, ТОП-3 по РФ среди 2200 участников (в разделе соревнования по программированию ИИ-ботов). Там есть обложка, куда можно влепить. . .
GitDOS: Когда я решил скрестить MS-DOS, GitHub и Claude
MaGz GoLd 08.07.2026
Привет, Киберфорум! Хочу поделиться своим проектом, который, надеюсь, вас заинтересует. GitDOS — это веб-приложение, которое позволяет запускать DOS в браузере с тремя крутыми фичами: диски живут в. . .
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru