使用 SelectToken 查询 JSON



我想查询一个JArray并根据某些条件返回另一个JArray。现在使用 LINQ,我可以首先查询它,返回一个IEnumerable<JToken>并将其转换为另一个JArray,如下所示:

IEnumerable<JToken> ienmTotalObjects = arrResults.Where(x => x["uResultId"]?.ToString() == arrTaskResults[intResult]["uResultId"].ToString() && x["iElementId"]?.ToString() == strUniqueElementId);
JArray arrTotalObjects = new JArray(ienmTotalObject);

现在我刚刚了解了 JSON.NET SelectTokens(https://www.newtonsoft.com/json/help/html/SelectToken.htm),并且似乎是一个非常方便的功能,可以在不转换为 IEnumerable 的情况下进行查询,但是我无法找到在我的案例场景中应用它的方法。好奇它是否真的可能?任何帮助,不胜感激。

从这个问题中,我可以猜出arrResultsarrTaskResults的 2 个结构

var arrResults = JArray.Parse(@"[
{ iElementId: 1, ""uResultId"" :""aa"" },
{ iElementId: 2, ""uResultId"" :""bb"" }
]");
var arrTaskResults = JArray.Parse(@"[
{ ""uResultId"" :""aa"" },
{ ""uResultId"" :""bb"" }
]");

但是,我不知道intResultstrUniqueElementId是什么,所以这些设置在这里

var intResult = 0;
var strUniqueElementId = "1";

现在我们可以执行相同的查询,但使用 SelectToken 方法传入 JPath:

var s = arrTaskResults.SelectToken($"$[{intResult}].uResultId");
var selectTokens = arrResults.SelectTokens($"$[?(@.uResultId=='{s}' && @.iElementId=={strUniqueElementId})]");

执行此操作将输出以下内容:

[
  {
    "iElementId": 1,
    "uResultId": "aa"
  }
]

相关内容

  • 没有找到相关文章

最新更新