【发布时间】:2016-03-16 16:33:36
【问题描述】:
我在使用带有特定 JsonPath 的 NewtonSoft v8.0.3 JToken.SelectTokens() 时遇到问题。在 C# 中重现问题:
string json = "[{\"name\":\"string\",\"value\":\"aString\"},{\"name\":\"number\",\"value\":123},{\"name\":\"array\",\"value\":[1,2,3,4]},{\"name\":\"object\",\"value\":{\"1\":1}}]";
string path = "$.[?(@.value!=null)]";
string newJson = String.Empty;
JToken jt = JToken.Parse(json);
IEnumerable<JToken> tokens = jt.SelectTokens(path, false);
newJson = JsonConvert.SerializeObject(tokens, Formatting.Indented);
// Output is missing objects and arrays??
// newJson = [{"name": "string","value": "aString"},{"name": "number","value": 123}]
运行上面的代码不会返回任何对象或数组?! Json.Net的JToken.SelectTokens()有bug吗?
要验证我使用的 http://goessner.net/articles/JsonPath/ 的路径是否正常,请参阅此工作 fiddle
我希望有人能对此有所启发。
更新: 认为这个问题是在我们尝试使用“null”值时发生的,但无论我运行什么不等式查询,JSON 都不会返回 {} / []。
【问题讨论】: