C# Получить ключи из переплетенного словаря строк - PullRequest
0 голосов
/ 21 февраля 2020

У меня есть словарь строк , как показано ниже. Как видите, ключи - это строковые даты , но их значения являются словарями.

"{"19-02-2020":{"1":"ABC","2":"DEF"},"20-02-2020":{"1" : "GHI","2" : "JKL","3" : "MNO"},"21-02-2020" : {"1" : "PRS"}}"

Это можно записать, чтобы быть более понятным;

"{
  "19-02-2020" : {"1" : "ABC", "2" : "DEF"},
  "20-02-2020" : {"1" : "GHI", "2" : "JKL", "3" : "MNO"},
  "21-02-2020" : {"1" : "PRS"}
 }"

Как я могу получить строковые даты в строковом формате? Я пытался разделить эту строку с помощью "," или чего-то еще. Но это кажется невозможным, потому что я получу больше дат со значениями словаря в будущем. Есть ли способ получить ключи из словаря строк?

Я хочу получить массив, содержащий строковые даты, такие как ["19-02-2020","20-02-2020","21-02-2020"]

Ответы [ 2 ]

2 голосов
/ 21 февраля 2020

Вы можете проанализировать вашу строку JSON в JObject из Newtonsoft.Json.Linq пространства имен. Он реализует IDictionary<string, JToken>, так что вы легко получите ключ как string

var jObject = JObject.Parse(json);

foreach (var item in jObject) 
    Console.WriteLine(item.Key);

Выход будет следующим:

enter image description here

0 голосов
/ 21 февраля 2020

Поскольку ваши данные - это просто словарь с строковым ключом и значение словаря , вы можете легко десериализовать его (например, с помощью Newtonsoft. Json) и извлеките нужные вам значения.

using Newtonsoft.Json;
var deserializedDictionary = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(yourString);

// The data you are interested in.
var dates = dict.Keys.ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...