如何获得整个 json 并使用 JsonPath 按字符串过滤后反映的结果

How to get the whole json with the result reflected after filter by string using JsonPath

我可以得到整个 json 并在使用 JsonPath 按字符串过滤后反映结果吗?

{
    "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
            } 
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

{
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            }       
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

通过 '$..book[?(@.author =~ /.*[=​​27=])]'

按字符串过滤书籍

但是你能告诉我把整个 JSON 反映出来吗?

您不能使用 JSONPath 执行此操作;虽然您想要 select 基于内部项目 属性 的 outer-most 项目,但您不想检索整个外部项目。那行不通。

选择外面的项目可以这样

$..store[?(@.book[0].author =~ /.*REES/i)]

但这也会 return 位置 2 的书,即索引 1。

听起来您确实需要 JSON 转换,例如 Jolt

例如,Jolt 的删除转换器可以让您像这样删除第二本书:

[
  {
    "operation": "remove",
    "spec": {
      "store": {
        "book": {
          "array": {
            "1": "" //remove book at position 2
          }
        }
      }
    }
  }
]

使用您自己的输入在线尝试 here