[英]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);
}
string json = @"{""key1"":""value1"",""key2"":""value2""}";
var values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.