在不知道索引的情况下在C#中解析json

我想用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 } 

例外:

未处理的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); }