C# 如何从c中的JObject获取特定值

C# 如何从c中的JObject获取特定值,c#,jobjectformatter,C#,Jobjectformatter,我需要从API响应中检索特定值。我的回答如下。如何访问每个包的[productCodeScheme]值 dynamic api = JObject.Parse(response.Content); // api contains { "operationCode": "12200000", "packs": [ { "pack": { "productCodeScheme": "ppn",

我需要从API响应中检索特定值。我的回答如下。如何访问每个包的[productCodeScheme]值

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可能是这样的吗?您好,请阅读部分。在这里,我们期待有具体问题的问题。你现在的问题听起来更像是一项任务。