C# 如何从c中的JObject获取特定值
我需要从API响应中检索特定值。我的回答如下。如何访问每个包的[productCodeScheme]值C# 如何从c中的JObject获取特定值,c#,jobjectformatter,C#,Jobjectformatter,我需要从API响应中检索特定值。我的回答如下。如何访问每个包的[productCodeScheme]值 dynamic api = JObject.Parse(response.Content); // api contains { "operationCode": "12200000", "packs": [ { "pack": { "productCodeScheme": "ppn",
dynamic api = JObject.Parse(response.Content);
// api contains
{
"operationCode": "12200000",
"packs": [
{
"pack": {
"productCodeScheme": "ppn",
"productCode": "15000436574634",
"serialNumber": "0000000001",
"batchId": "00001",
"expiryDate": "201201"
},
"result": {
"operationCode": "61020008",
"warning": "The product code is invalid."
}
},
{
"pack": {
"productCodeScheme": "gs1",
"productCode": "15000436574634",
"serialNumber": "0000000002",
"batchId": "00001",
"expiryDate": "201201"
},
"result": {
"operationCode": "11310300",
"information": "The pack has been marked as stolen.",
"state": "Stolen"
}
}
]
}
如果您想让对象保持动态,可以这样做 动态结果=JsonConvert.DeserializeObjectresponse.Content 之后,您可以访问内部对象,如下所示: result.packs中的foreachdynamic项 { 字符串productCodeScheme=item.pack.productCodeScheme.ToString; } 但是,我强烈建议您将JSON响应反序列化为已定义的对象,而不是使用dynamic。动态既不安全又低效。你可以做一些事情,比如下面的例子 公共类打包详细信息 { 公共字符串productCodeScheme{get;set;} 公共字符串productCode{get;set;} 公共字符串序列号{get;set;} 公共字符串batchId{get;set;} 公共字符串过期日期{get;set;} } 公开课成绩 { 公共字符串操作代码{get;set;} 公共字符串警告{get;set;} 公共字符串信息{get;set;} 公共字符串状态{get;set;} } 公共类包 { 公共包详细信息包{get;set;} 公共结果结果{get;set;} } 公共类响应对象 { 公共字符串操作代码{get;set;} 公共列表包{get;set;} } 然后您可以像下面这样反序列化ResponseObject并使用它 var responseObject=JsonConvert.DeserializeObject; ForEachPackResponseObject.packs中的详细项目 { 字符串productCodeScheme=item.pack.productCodeScheme; }
去json2csharp网站——通过你的json——它会给你上课;使用Newtonsoft json反序列化程序将json反序列化到这些生成的类。那你会觉得容易多了?否则读文件?字符串productCodeScheme=api。SelectToken@packs[0].pack.productCodeScheme.Value可能是这样的吗?您好,请阅读部分。在这里,我们期待有具体问题的问题。你现在的问题听起来更像是一项任务。