gpt4 book ai didi

c# - 通过 JSON 标签读取 JSON

转载 作者:行者123 更新时间:2023-12-04 09:40:57 31 4
gpt4 key购买 nike

我从一家身份检查公司以 JSON 的形式获取了数据。我只需要从该 JSON 文件中获取一些数据,因此我反序列化了 JSON 文件并尝试读取特定标签。当我试图读取标签时,我总是得到空值。下面是我的 JSON 文件和 C# 代码:

{
"responseHeader": {
"requestType": "PreciseIdOnly",
"clientReferenceId": "21321",
"expRequestId": "213213",
"messageTime": "2020-05-28T00:00:02Z",
"overallResponse": {
"decision": "REFER",
"decisionText": "Continue & Investigate",
"decisionReasons": [
"Continue & Investigate"
],
"recommendedNextActions": [],
"spareObjects": []
},
"responseCode": "R123",
"responseType": "INFO",
"responseMessage": "Workflow Complete.",
"tenantID": "V123242"
},
"clientResponsePayload": {
"orchestrationDecisions": [
{
"sequenceId": "1",
"decisionSource": "PreciseId",
"decision": "REFER",
"decisionReasons": [
"Continue & Investigate"
],
"score": 737,
"decisionText": "Continue & Investigate",
"nextAction": "Continue",
"appReference": "22222",
"decisionTime": "2020-05-28T18:58:43Z"
}
]
}
}

下面是我的代码:
 var data = (JObject)JsonConvert.DeserializeObject(JSONResponse);
string x = data["clientResponsePayload.orchestrationDecisions.sequenceId"].Value<string>();

JSONResponse 是我来自正在检查身份的公司的 JSON 文件。我收到一条错误消息:
"Value cannot be null.\r\nParameter name: value

我不确定我做错了什么。这个 JSON 文件很大,有很多嵌套的 JSON 标签。这是我如何读取从身份检查公司发送给我的 JSON 文件:
HttpResponseMessage response = client.SendAsync(request).Result;
string responseContent = await response.Content.ReadAsStringAsync();

最佳答案

你有几个问题。

首先,"clientResponsePayload.orchestrationDecisions.sequenceId"JSONPath query .查询 JObject通过 JSONPath 查询,您需要使用 JToken.SelectToken() . indexer您使用的只是获取或设置 JToken具有指定的属性名称,并且不执行 JSON 层次结构的深度查询。

其次,sequenceId属性实际上嵌套在数组中,因此您需要使用路径 "clientResponsePayload.orchestrationDecisions[0].sequenceId"得到第一个。或者,您也可以使用带有 * 的路径通配符"clientResponsePayload.orchestrationDecisions[*].sequenceId"连同 JToken.SelectTokens() 获取所有序列 ID。

因此你的代码应该是:

var x = data.SelectToken("clientResponsePayload.orchestrationDecisions[0].sequenceId")?.Value<string>();

或者,您可以使用 null-conditional operator ?[] 将索引器链接在一起,而不是使用 JSONPath 查询。像这样:

var x = data["clientResponsePayload"]?["orchestrationDecisions"]?[0]?["sequenceId"]?.Value<string>();

演示 fiddle here .

关于c# - 通过 JSON 标签读取 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62332366/

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