Аватар для eppi
3 / 3 / 2
Регистрация: 13.02.2012
Сообщений: 108

Массив Json в Dictionary

07.12.2019, 22:58. Показов 11546. Ответов 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
14731 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,857
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru