我有一个复杂的JSON结构。我不想排除一个部分,并在两个桶中获取列表。将One称为“包含”,将另一个称为“排除”。 示例JSON如下所示。
{
"Item": {
"Items": [{
"Items": [{
"category": "fruit",
"Item": {
"Items": [{
"Text": "Apple"
},
{
"Text": "Orange"
},
{
"Text": "Grapes"
},
{
"Text": "Guava"
}],
"Types": ["Value",
"Value",
"Value",
"Value"]
},
"Type": "Or"
},
{
"category": "fruit",
"Item": {
"Text": "Pineapple"
},
"Type": "Value"
}],
"Types": ["Constraint",
"Constraint"]
},
{
"category": "fruit",
"Item": {
"Text": "Banana"
},
"Type": "Value"
}],
"Types": ["Not",
"Constraint"]
},
"Type": "And"}
这里我们有类别水果,其中我们的苹果,橙子,葡萄和番石榴是“OR”和菠萝与“AND”类型和香蕉是“不”。一旦我尝试
Item..Items[?(@.category='fruit')]..Text
它让我回头
[ "Banana", "Apple", "Orange", "Grapes", "Guava", "Pineapple"]
但我希望List为
{["Apple", "Orange", "Grapes", "Guava", "Pineapple" ]
},{["Banana"]}
JSON Path中是否有办法获得类似结构的东西
答案 0 :(得分:1)
这可能不是您预期的答案,但我认为JsonPath不可能。
在评估路径时,您需要了解路径何时确定的概念。如果路径包含:
,则路径不确定
不定路径始终返回一个列表(由当前JsonProvider表示)。
所以你的结果将永远是一个列表。我认为你已经拥有的是最接近的。
答案 1 :(得分:1)
使用JSONPath无法完成。