C# 如何使用SelectToken在嵌套的动态JSON中查找值

C# 如何使用SelectToken在嵌套的动态JSON中查找值,c#,json.net,quickbooks-online,C#,Json.net,Quickbooks Online,我不知道如何使用JToken获得325.00的总收入 我尝试了很多不同的代码行,但似乎遗漏了一些明显的东西 { "Rows": { "Row": [ { "Rows": { }, "type": "Section", "group": "Income", "Summary": { "ColData": [ { "value

我不知道如何使用JToken获得325.00的总收入

我尝试了很多不同的代码行,但似乎遗漏了一些明显的东西

{
  "Rows": {
    "Row": [
      {
        "Rows": {
        },
        "type": "Section",
        "group": "Income",
        "Summary": {
          "ColData": [
            {
              "value": "Total Income"
            },
            {
              "value": "325.00"
            }
          ]
        }
      },
      {
      }
    ]
  }
}

对于您在问题中给出的特定JSON示例,您可以使用以下方法提取325.00值:

var obj = JObject.Parse(json);
var amount = (string)obj.SelectToken("Rows.Row[0].Summary.ColData[1].value");
小提琴:

如果要提取标签和金额,可以使用通配符代替ColData索引:


Fiddle:

对于您在问题中给出的特定JSON示例,您可以使用以下方法提取325.00值:

var obj = JObject.Parse(json);
var amount = (string)obj.SelectToken("Rows.Row[0].Summary.ColData[1].value");
小提琴:

如果要提取标签和金额,可以使用通配符代替ColData索引:


小提琴手:

谢谢你,布莱恩。我正在用CThanks Brian编写代码。我正在用CThanks Brian编写代码。为什么不是Rows.Row.Rows[0].Summary.ColData[*].value?因为Summary不在您在问题中发布的最里面的Rows对象中;它位于行数组中第一个对象的内部。内部行对象为空。如果您的实际JSON与您发布的示例不同,那么您可能需要相应地调整路径。再次感谢-如果行位置每次都不同怎么办?有没有办法搜索或查询标记的JSON结果?更具体地说,如果我的JSON结果有多个类型“Section”和组“Income”,我如何使用SelectToken获取给定类型和组中的数据?在这种情况下,您可能需要使用LINQ查询来选择数据。如果您可以编辑您的问题或提出一个新问题来提供一个更好的JSON示例以及您试图从中获得什么,那么我可以向您展示如何编写LINQ查询以从中获取数据。谢谢Brian。为什么不是Rows.Row.Rows[0].Summary.ColData[*].value?因为Summary不在您在问题中发布的最里面的Rows对象中;它位于行数组中第一个对象的内部。内部行对象为空。如果您的实际JSON与您发布的示例不同,那么您可能需要相应地调整路径。再次感谢-如果行位置每次都不同怎么办?有没有办法搜索或查询标记的JSON结果?更具体地说,如果我的JSON结果有多个类型“Section”和组“Income”,我如何使用SelectToken获取给定类型和组中的数据?在这种情况下,您可能需要使用LINQ查询来选择数据。如果您可以编辑您的问题或提出一个新问题来提供一个更好的JSON示例,以及您试图从中获得什么,那么我可以向您展示如何编写LINQ查询以从中获取数据。