Словарь двух разных типов и конвертировать как JSON - PullRequest
0 голосов
/ 24 января 2020

У меня есть Json запись в файл следующим образом:

{
    "KeyString1": "ValueString1",
    "KeyListOfDict": [
        {
            "KeyString2": "ValueString2",
            "KeyDict2": {
                "KeyString3": "ValueString3"                
            }
        },
        {
            "KeyString4": "ValueString4",
            "KeyDict2": {
                "KeyString5": "ValueString5"                
            }
        }
    ]
}

Мне нужен доступ к "ValueString3" и "ValueString5", но мне не удается десериализовать в словаре.

dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

Из-за нескольких типов значений в словаре я не знаю, как заставить это работать.

Можете ли вы помочь найти способ использовать это Json файл?

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Вы можете попробовать с JObject

string json = File.ReadAllText(path);
var resultToDict = JObject.Parse(json)["KeyListOfDict"]
                   .Select(p => (((JProperty)p["KeyDict2"].Children().First()).Name, ((JProperty)p["KeyDict2"].Children().First()).Value))
                   .ToDictionary(x => x.Name, x => x.Value.ToString());
0 голосов
/ 24 января 2020
JavaScriptSerializer jss = new JavaScriptSerializer();
jss.Deserialize<dynamic>(json);

результат, к которому вы можете получить доступ с помощью имени свойства.

...