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

如何使用JsonPath获取整个json,并在按字符串过滤后反映结果,json,jsonpath,jayway,Json,Jsonpath,Jayway,我是否可以使用JsonPath通过字符串过滤后得到整个json以及反映的结果 在JSON之前 在JSON之后(我想要这个结果) 通过“$…book[?(@.author=~/.*REES/i)]对book按字符串进行筛选 但是,您能告诉我如何反映整个JSON吗?您不能使用JSONPath;虽然要根据“内部项”属性选择最外层的项,但不希望检索整个外部项。这是行不通的 选择外部项目可以这样做 $..store[?(@.book[0].author =~ /.*REES/i)] 但这也将返回

我是否可以使用JsonPath通过字符串过滤后得到整个json以及反映的结果

  • 在JSON之前
  • 在JSON之后(我想要这个结果)
通过“$…book[?(@.author=~/.*REES/i)]对book按字符串进行筛选


但是,您能告诉我如何反映整个JSON吗?

您不能使用JSONPath;虽然要根据“内部项”属性选择最外层的项,但不希望检索整个外部项。这是行不通的

选择外部项目可以这样做

$..store[?(@.book[0].author =~ /.*REES/i)]
但这也将返回位于位置2的图书,即索引1

听起来您实际上需要一个JSON转换,比如

例如,Jolt的remove transformer允许您删除第二本书,如下所示:

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

使用您自己的输入联机尝试。

JSONPath本身无法完成此操作。。!我会寻找震动。谢谢你的回答!
$..store[?(@.book[0].author =~ /.*REES/i)]
[
  {
    "operation": "remove",
    "spec": {
      "store": {
        "book": {
          "array": {
            "1": "" //remove book at position 2
          }
        }
      }
    }
  }
]