我正在尝试实现一个看似简单的 JSON 路径过滤器,但未能使其正常工作。想知道其他对 Json.NET 的 JSON 路径实现有更多经验的人是否对后续步骤有想法。
这种情况失败了,但我认为应该可行?
var jsonText = @"{
'event': {
'data': {
'intField': 1,
'stringField': 'hello'
}
}
}";
JObject json = JsonConvert.DeserializeObject<JObject>(jsonText);
string jsonPath = "$.event.data[?(@.intField == 1)]";
IList<JToken> output = json.SelectTokens(jsonPath).ToList();
// this check fails
Assert.IsTrue(output.ToList().Count > 0);
Run Code Online (Sandbox Code Playgroud)
如果我通过在“数据”对象周围添加虚拟数组来处理 JSON 有效负载,那么我就可以让查询正常工作。但是,我宁愿不处理 JSON 有效负载。
var jsonText = @"{
'event': {
'data': [{
'intField': 1,
'stringField': 'hello'
}]
}
}";
JObject json = JsonConvert.DeserializeObject<JObject>(jsonText);
string jsonPath = "$.event.data[?(@.intField == 1)]";
IList<JToken> output = json.SelectTokens(jsonPath).ToList();
// now …
Run Code Online (Sandbox Code Playgroud)