【问题标题】:Groovy remove list if an item is equal to如果项目等于,则 Groovy 删除列表
【发布时间】:2021-12-09 06:54:42
【问题描述】:

我有这个 json:

{
    "books": [
        {
            "bookId": "1",
            "bookName": "name1",
            "bookYear": "2010"
        },
        {
            "bookId": "2",
            "bookName": "name2",
            "bookYear": "2010"
        }
    ]
}

我想删除包含 "bookId": "1" 的列表 结果应该是:

{
    "books": [
        {
            "bookId": "2",
            "bookName": "name2",
            "bookYear": "2010"
        }
    ]
}

我试过这段代码:

import groovy.json.JsonSlurper
import groovy.json.JsonOutput


JsonSlurper slurper = new JsonSlurper()
String jsonString = vars.get("jsonOutput")
def parsedJson = slurper.parseText(jsonString)

log.info("Json before: " + jsonString)

int num = parsedJson.books.size()
for(int i=0;i<parsedJson.books.size();i++){
    parsedJson.books[i].values().removeAll(value -> value.equals("1"))
}

def json = JsonOutput.toJson(parsedJson)
log.info("Json after: " + json.toString())

但它只从列表中删除“bookId”:

Json before: {"books":[{"bookId":"1","bookName":"name1","bookYear":"2010"},{"bookId":"2","bookName":"name2","bookYear":"2010"}]}

Json after: {"books":[{"bookName":"name1","bookYear":"2010"},{"bookId":"2","bookName":"name2","bookYear":"2010"}]}

请问,你能帮我解决这个问题吗?

【问题讨论】:

    标签: dictionary groovy collections jsonslurper


    【解决方案1】:

    您可以像这样过滤书籍列表:

    def parsedJson = slurper.parseText(jsonString)
    
    parsedJson.books = parsedJson.books.findAll { it.bookId != '1' }
    
    def json = JsonOutput.toJson(parsedJson)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 2022-11-23
      相关资源
      最近更新 更多