JSONpath () 中的 && 运算符
&& operator in JSONpath ()
下面是来自 tutorial
的示例 json
{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
我正在尝试检查具有以下条件的对象
$..[?(@.price == 12.99 && @.title == 'Moby Dick')]
应该如下所示检索我。但是,它只显示 [].
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
关于查询中错误位置的任何指示?
您应该使用 ||
而不是 &&
,因为您想要的对象具有任一价格(不是两者,这是不可能的):
$..[?(@.price == 12.99 || @.price == 8.99)]
我认为您误解了 && 运算符的工作原理。如果我明白你想要什么,你搜索字段 "price" 等于 12.99 "and" 的对象(包含所有字段) 字段 "title" 的对象(包含所有字段)等于白鲸记。
但是当您键入 $..[?(@.price == 12.99 && @.title == 'Moby Dick')]
时,您搜索每个对象,其中一个名为 "price" 的字段等于 12.99,而在同一对象中另一个名为 "title" 的字段等于白鲸.
此对象的和none满足这两个条件。所以答案是 [](未找到对象或不匹配)
要获得正确的结果,您不搜索此对象和此对象,但此字段的对象等于 OR(|| 运算符)其他字段的对象等于到.
所以 cybersam 的答案是程序化的正确答案
我希望这很清楚并有所帮助
下面是来自 tutorial
的示例 json{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}
我正在尝试检查具有以下条件的对象
$..[?(@.price == 12.99 && @.title == 'Moby Dick')]
应该如下所示检索我。但是,它只显示 [].
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
关于查询中错误位置的任何指示?
您应该使用 ||
而不是 &&
,因为您想要的对象具有任一价格(不是两者,这是不可能的):
$..[?(@.price == 12.99 || @.price == 8.99)]
我认为您误解了 && 运算符的工作原理。如果我明白你想要什么,你搜索字段 "price" 等于 12.99 "and" 的对象(包含所有字段) 字段 "title" 的对象(包含所有字段)等于白鲸记。
但是当您键入 $..[?(@.price == 12.99 && @.title == 'Moby Dick')]
时,您搜索每个对象,其中一个名为 "price" 的字段等于 12.99,而在同一对象中另一个名为 "title" 的字段等于白鲸.
和none满足这两个条件。所以答案是 [](未找到对象或不匹配)
要获得正确的结果,您不搜索此对象和此对象,但此字段的对象等于 OR(|| 运算符)其他字段的对象等于到.
所以 cybersam 的答案是程序化的正确答案
我希望这很清楚并有所帮助