我有一個問題,使用NewtonSoft v8.0.3 JToken.SelectTokens()與特定的JsonPath。在C#中重現問題:問題/ Bug使用SelectTokens與JsonPath
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()中是否存在錯誤?
爲了驗證我已經使用http://goessner.net/articles/JsonPath/工作正常的路徑,看到這個工作fiddle
我希望有人能照到這個一些。
UPDATE: 思考這個問題發生,因爲我們正在嘗試使用「空」的值,但是不管我跑什麼不平等查詢,沒有{}/[]從JSON返回。
我很高興地通知這個問題已經在新版本中修復。有關更多信息,請參閱https://github.com/JamesNK/Newtonsoft.Json/commit/031222d4f4bd541e66f236329591f2427f835174。 – mrw