【发布时间】:2020-03-12 19:26:00
【问题描述】:
我正在尝试将RESTFUL API 用于我们内部使用的应用程序。对 API 的一次调用会返回以下 JSON:
{
"operation": {
"name": "GET RESOURCES",
"result": {
"status": "Success",
"message": "Query was successful"
},
"totalRows": 2,
"Details": [{
"RESOURCE DESCRIPTION": "Windows",
"RESOURCE TYPE": "Windows",
"RESOURCE ID": "101",
"RESOURCE NAME": "WINDOWSPC",
"NOOFACCOUNTS": "1"
}, {
"RESOURCE DESCRIPTION": "Ubuntu",
"RESOURCE TYPE": "Linux",
"RESOURCE ID": "808",
"RESOURCE NAME": "UBUNTUPC",
"NOOFACCOUNTS": "2"
}]
}
}
使用 json.net 我反序列化 json 并使用以下行检查统计信息:
dynamic json = JsonConvert.DeserializeObject(response);
var status = json.operation.result.status.Value;
接下来我想获取返回的每个“详细信息”的每个值,但我不知道如何。我首先尝试仅通过以下方式获取详细信息:
var resourceList = json.operation.Details
这可行,但我不能通过迭代来获取例如“资源 ID”和“资源名称”。
我也不能使用.Children(),但是当我将鼠标悬停在资源列表上时,有一个ChildrenTokens,这似乎是我想要的,但我无法在我的代码中找到它。
我还尝试按照他们的example 将resourceList 用作数据集,但它会引发异常。
谁能看到我做错了什么.....我不熟悉用 C# 解析 JSON
【问题讨论】:
-
复制您的 JSON 字符串然后使用选择性粘贴(编辑 -> 选择性粘贴 -> 将 JSON 粘贴为类),它将为您生成所有必要的类。
-
@SᴇM 这听起来像是我可以使用的东西......但在我的 VS2019 社区中,我没有那个选项......
-
@neildeadman 你知道,它在所有版本中都可用。在 C# 文件中,转到
Edit菜单并打开Paste Special子菜单。该选项不会出现在其他文本文件中 -
一旦你定义了类,你可以简单地使用
DeserializeObject<T>和你的类。 newtonsoft.com/json/help/html/DeserializeObject.htm -
这能回答你的问题吗? Deserialize JSON into Object C#