簡體   English   中英

如果項目等於,則 Groovy 刪除列表

[英]Groovy remove list if an item is equal to

我有這個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"}]}

拜托,你能幫我嗎?

您可以像這樣過濾書籍列表:

def parsedJson = slurper.parseText(jsonString)

parsedJson.books = parsedJson.books.findAll { it.bookId != '1' }

def json = JsonOutput.toJson(parsedJson)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM