0

我有一个 JSON 和一个 jsonPath 字符串列表。我想从 JSON 中删除所有内容,只保留我拥有的 jsonPaths 列表。我正在使用Jayway 的 JsonPath

说我的 jsonPaths 是:

  1. $.c
  2. $.b[?(@.name=='ironman')]

我的 JSON 是

{
    "a":"1",
    "b":[
        {
            "name": "ironman"
        },
        {
            "name": "thor"
        }
    ],
    "c": {
        "d":{
            "e": "nested"
        }
    }
}

我希望我生成的 JSON 是

 "b":[
        {
            "name": "ironman"
        }
    ],
    "c": {
        "d":{
            "e": "nested"
        }
    }

有什么简单的方法可以做到这一点吗?

4

1 回答 1

0

您基本上是在要求 JSON 转换;在 Java 中经常为此建议使用JOLT 。

使用 Shift/Remover 操作,我们可以执行以下操作:

[
  // Summary : Filter the "b object" by a specific name:ironman.
  {
    "operation": "shift",
    "spec": {
      "b": {
        // loop thru all the elements array
        "*": {
          "name": {
            // loop thru each element of the array
            // if the value in the name item is "ironman"
            // grab the whole "object" and write it out to the new b array.
            // The "@2" means go up the tree 3 levels (0-based) and grab what is there
            "ironman": {
              "@2": "b[]"
            }
          }
        }
      },
      "c": "c"
    }
  }
]

这会创建请求的输出。

您可以在JOLT 在线演示中使用您在此处输入的内容进行在线测试。

进一步阅读:

于 2021-03-15T16:30:04.337 回答