[英]Trying C# parse Json into Dictionary with inner arrays
我是C#的新手請澄清如何解析這個JSON。 我需要迭代內部數組來提取一些數據。 JSON:
{
"p": [{
"p": [{
"p": "Get in ",
"f": [],
"t": "t"
},
{
"p": "test",
"t": "lb",
"id": "Make"
},
....
例如,需要訪問字典“{”p“:”進入“,”f“:[],”t“:”t“}”執行以下操作:
Dictionary<string, object> result = JsonConvert.DeserializeObject<Dictionary<string, object>>(bodyString);
List<Dictionary<string, object>> itemsArray = result["p"] as List<Dictionary<string, object>>;
foreach(var itemInfo in itemsArray)
{
}
但itemsArray為null。
如果您創建一個模型以適合數據,那么您不必擔心多級字典反序列化的問題。
void Main()
{
var json = @"{
""p"":[
{
""p"":[
{
""p"":""Get in "",
""f"":[
],
""t"":""t""
},
{
""p"":""test"",
""t"":""lb"",
""id"":""Make""
}
]
}
]
}";
var data = JsonConvert.DeserializeObject<ItemCollection>(json);
}
public class ItemCollection
{
public ItemGroup[] p { get; set; }
}
public class ItemGroup
{
public Item[] p { get; set; }
}
public class Item
{
public string p { get; set; }
public string t { get; set; }
public string id { get; set; }
public string[] f { get; set; }
}
如果將反序列化為字符串到對象的字典,則對象將是JArray,Jobject或JToken。 {var result = JsonConvert.DeserializeObject>(json);
Console.WriteLine((result["p"]).GetType().Name);
}
將輸出'JArray'。
您可以使用JArray等,或者指定所需的完整結構:
{
var result = JsonConvert.DeserializeObject<Dictionary<string, List<Dictionary<string,List<Dictionary<string,object>>>>>>(json);
Console.Write((result["p"]).GetType().Name);
var itemsArray = result["p"];
var item = result["p"][0]["p"][0];
foreach(var entry in item)
Console.WriteLine(entry.Key + " = " + entry.Value);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.