[英]Parsing json in C# without knowing indexes
我想用JSON.NET在C#中解析這段JSON,但我不知道如何去做。
JSON:
{
"success":true,
"rgInventory":{
"967633758":{
"id":"967633758",
"classid":"23973033",
"instanceid":"11040671",
"amount":"1",
"pos":1
},
"302756826":{
"id":"302756826",
"classid":"15",
"instanceid":"11041143",
"amount":"1",
"pos":2
},...
}
}
全Json: http ://steamcommunity.com/id/jessecar/inventory/json/440/2/?trading =1
我需要獲取每個“rgInventory”子元素的元素,但我不能為它創建一個類,因為項目名稱總是在變化。
我嘗試使用這段代碼,但我總是得到一個例外。
dynamic jsObject = JsonConvert.DeserializeObject(jsonString);
Console.WriteLine("Status: "+jsObject["success"]); //This works fine
foreach(var i in jsObject["rgInventory"]){
Console.WriteLine("Item ID: "+i["id"]); //This gives an exception
}
例外:
未處理的異常:System.InvalidOperationException:無法訪問Newtonsoft.Json.Linq.JProperty上的子值。
這應該工作。
var jObj = (JObject)JsonConvert.DeserializeObject(json);
foreach(var child in jObj["rgInventory"].Children())
{
Console.WriteLine("Item ID: {0}", child.First()["id"]);
}
此外,使用dynamic
關鍵字可以使您的代碼更易讀:
dynamic jObj = JsonConvert.DeserializeObject(json);
Console.WriteLine("Status: " + jObj.success);
foreach(var child in jObj.rgInventory.Children())
{
Console.WriteLine("Item ID: {0}", child.First.id);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.