JsonPath SelectToken不适用于递归结构

时间:2019-08-20 16:43:15

标签: json.net jsonpath recursive-descent

我要使用SelectToken在以下JSON上获取特定值-

{
  "Result": {
    "Id": "knownvalue0",
    "Name": "Level0",
    "Children": [
      {
        "Name": "Level1",
        "Id": "knownvalue1",
        "Children": [
          {
            "Name": "Level2",
            "Id": "knownvalue2",
            "Children": [
              {
                "Id": "knownvalue3",
                "Name": "Level3",
                "Children": []
              }
            ]
          }
        ]
      }
    ]
  }
}

结构是递归的,我不知道运行时的深度。但是,我确实知道ID,并且想验证名称是否正确。因此,我使用像这样的JsonPath-Result..[?(@Id=='knownvalue')].Name in jtoken.parse(response).selecttoken(jsonpath)方法。当我在knownvalue1或knownvalue2上使用此jsonpath时发生问题,即-

Result..[?(@Id=='knownvalue1')].Name

我遇到异常-路径返回多个令牌。为什么即使只有1个ID ='knownvalue1'的selecttoken也返回多个令牌? Level2和Level3节点是子节点,不应返回它们。

0 个答案:

没有答案