簡體   English   中英

將JSON動態反序列化為C#字典

[英]Dynamically Deserialize JSON to C# Dictionary

我有一個JSON文件,試圖將其反序列化為以字典作為值的列表,但是卻努力以一種不錯的格式獲取輸出,並在反序列化后努力索引/解析。 我對此並不陌生,不勝感激。 我希望鍵/值對看起來像:{“ greeting”:[“ greet1”:“ hey”,“ greet2”:“ hi”]}

JSON文件如下:

{
"greeting": [
        {
          "greet1": "hey",
          "greet2": "hi"
        }
      ],
"bye": [
        {
          "bye1": "adios"
        }
      ]
}

嘗試的代碼:

public static Dictionary<string, List<Dictionary<string, string>>> jsonResponses = new Dictionary<string, List<Dictionary<string, string>>>();

public static void DeserializeJsonDict()
{
    string jsonURL = HttpContext.Current.Server.MapPath("./theFile.json");

    using (var webClient = new System.Net.WebClient())
    {
        var jsonData = webClient.DownloadString(jsonURL);
        jsonResponses = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string, string>>>>(jsonData);

    }

}
var str = @"{'greeting':[{'greet1': 'hey','greet2': 'hi'}],'bye': [{'bye1': 'adios'}]}";    
var data = JsonConvert.DeserializeAnonymousType(str, new Dictionary<dynamic, dynamic>());

您可以直接引用屬性,例如data.greeting 此外,還有另一種遍歷轉換結果的方法-使用KeyValuePair<string, dynamic>作為通用類型參數使您能夠迭代動態值,例如

foreach (var i in data){
  Console.WriteLine(i.Key);
  foreach(var v in i.Value) Console.WriteLine(v); 
}

https://dotnetfiddle.net/UUvMeA

string json = @"{""key1"":""value1"",""key2"":""value2""}";

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM