Json.NET JsonPath 语法是“不包含”,还是否定匹配?
Json.NET JsonPath syntax for “does not include”, or negative matching?
我正在尝试过滤 json 中没有 "name" 属性.
的图书
我发现 Java JsonPath
支持它
$..book[?(!@.name)]
但是当我在 C# 中使用它时 ::
json.SelectTokens("$..book[?(!@.name)]")
我得到了::
"Unexpected character while parsing path query: !"
也尝试过::
json.SelectTokens("$..book[?(@.name == null)]")
已解析但返回 0 个结果。
您可以使用 LINQ 语法获取不包含 属性 的标记。
我不知道你的确切 JSON 所以我模拟了一个简单的例子。如果您 post 您的 JSON 我将更新我的答案以与您的特定 JSON 一起使用。
测试JSON:
JObject o = JObject.Parse(@"{
'books': [
{'book':{'name':'some book name 1', 'author':'bob smith'}},
{'book':{'author':'mary smith'}}
]}");
没有name
如何获得代币 属性:
var result = o.SelectTokens("books[*].book").Where(t => t["name"] == null);
// result = {{ "author": "mary smith" }}
我正在尝试过滤 json 中没有 "name" 属性.
的图书我发现 Java JsonPath
支持它$..book[?(!@.name)]
但是当我在 C# 中使用它时 ::
json.SelectTokens("$..book[?(!@.name)]")
我得到了::
"Unexpected character while parsing path query: !"
也尝试过::
json.SelectTokens("$..book[?(@.name == null)]")
已解析但返回 0 个结果。
您可以使用 LINQ 语法获取不包含 属性 的标记。
我不知道你的确切 JSON 所以我模拟了一个简单的例子。如果您 post 您的 JSON 我将更新我的答案以与您的特定 JSON 一起使用。
测试JSON:
JObject o = JObject.Parse(@"{
'books': [
{'book':{'name':'some book name 1', 'author':'bob smith'}},
{'book':{'author':'mary smith'}}
]}");
没有name
如何获得代币 属性:
var result = o.SelectTokens("books[*].book").Where(t => t["name"] == null);
// result = {{ "author": "mary smith" }}