【问题标题】:Remove a specific JSONObject from JSONArray in groovy从 groovy 中的 JSONArray 中删除特定的 JSONObject
【发布时间】:2020-06-04 07:30:35
【问题描述】:

假设我有一个 JSON 请求负载,例如

{
    "workflow": {
        "approvalStore": {
            "sessionInfo": {
                "user": "baduser"
            },
            "guardType": "Transaction"
        }
    }
}

我通过

得到user的值
def user = req.get("workflow").get("approvalStore").get("sessionInfo").get("user")

现在,我得到了一个 RestResponse approvalList,我将其存储为 list 并以 return approvalList.json as JSON 的形式返回给调用者。到目前为止一切顺利。

假设响应 (approvalList.json) 如下所示 JSONArray -

[
    {
        "objId": "abc2",
        "maker": "baduser"
    },
    {
        "objId": "abc1",
        "maker": "baduser"
    },
    {
        "objId": "abc4",
        "maker": "gooduser"
    }
]

问题:如何过滤approvalList.json,使其不包含具有"maker": "baduser" 的条目(对象)?传递给maker 的值本质上应该是我之前得到的user 变量。

理想所需的输出 -

【问题讨论】:

  • 请添加您尝试过的代码以及失败的原因(例如错误、堆栈跟踪、日志等),以便我们对其进行改进。

标签: json grails groovy hashmap jsonslurper


【解决方案1】:

如果您总是希望返回单个对象或对象列表,但使用 collect 将是这里的关键:

// given this list
List approvalList  = [
    [objId: "abc2", maker: "baduser"], 
    [objId: "abc1", maker: "baduser"], 
    [objId: "abc4", maker: "gooduser"]
]

// you mentioned you wanted to match a specific user
String user = "baduser"
List filteredList = approvalList.findAll{ it.maker != user}​​​​​​

// wasn't sure if you wanted a single object or a list...
if (filteredList.size() == 1) {
    return filteredList[0] as JSON
} else {
    return filteredList as JSON
}​

【讨论】:

  • 谢谢,我想要一个没有maker=baduser 映射的对象列表。
  • 那我想你可能想用approvalList.findAll{ it.maker != 'baduser'}​​​​​​替换approvalList.findAll{ it.maker == user}​​​​​​。
【解决方案2】:

很简单。先将JSON解析成一个对象,然后遍历测试。

JSONObject json = JSON.parse(text)
json.each(){ it ->
   it.each(){ k,v ->
      if(v=='baduser'){
          // throw exception or something
      } 
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-25
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多