gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:06:26 25 4
gpt4 key购买 nike

我想用 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):

Unhandled Exception: System.InvalidOperationException: Cannot access child value on 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);
}

关于c# - 在不知道索引的情况下在 C# 中解析 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11446989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com