【发布时间】:2021-07-25 07:54:12
【问题描述】:
我正在尝试应用仅基于文档中的另一个元素选择元素的 JSON 路径。
例如,对于以下 JSON:
{
'SomeFieldA': 'X',
'SomeFieldB': {
'SomeFieldC': 'Y'
}
}
当SomeFieldA 存在且等于X 时,我只想选择SomeFieldC
我尝试运行以下表达式 $.SomeFieldB[?($.SomeFieldA == 'X')].SomeFieldC,尽管它在某些实现中有效(例如 https://jsonpath.herokuapp.com/),但它似乎不适用于 Newtonsoft (JSON.NET)
以下代码对我不起作用(返回一个空列表):
var jsonObject = JObject.Parse(@"
{
'SomeFieldA': 'X',
'SomeFieldB': {
'SomeFieldC': 'Y'
}
}");
Console.WriteLine(string.Join(
Environment.NewLine,
jsonObject.SelectTokens("$.SomeFieldB[?($.SomeFieldA == 'X')].SomeFieldC")
.Select(token => token.ToString())));
我知道我可以通过一个简单的 LINQ 查询来获得这种行为,但我有一个只能使用 JSON 路径的框架,所以我想找到一个可以实现这一目标的 JSON 路径。
【问题讨论】: