Карта с JSON в список с определенным ключом - PullRequest
0 голосов
/ 15 ноября 2018

Мне удалось получить список json и получить ключ от json.

Я работаю над тем, как поместить каждое значение версии в список. Как мне это сделать с карты?

Map convertedJSONMap = new JsonSlurperClassic().parseText(data)

//If you have the nodes then fetch the first one only
if(convertedJSONMap."items"){
    println "Version : " + convertedJSONMap."items"[0]."version"
}   

Так что мне нужен какой-то цикл foreach, который будет бросать карту и просто получать предметы. версия от каждого и положить его в список. Как?

1 Ответ

0 голосов
/ 15 ноября 2018

Groovy имеет Collection.collect(closure), который можно использовать для преобразования списка значений одного типа в список новых значений.Рассмотрим следующий пример:

import groovy.json.JsonSlurper

def json = '''{
    "items": [
        {"id": "ID-001", "version": "1.23", "name": "Something"},
        {"id": "ID-002", "version": "1.14.0", "name": "Foo Bar"},
        {"id": "ID-003", "version": "2.11", "name": "Something else"},
        {"id": "ID-004", "version": "8.0", "name": "ABC"},
        {"id": "ID-005", "version": "2.32", "name": "Empty"},
        {"id": "ID-006", "version": "4.11.2.3", "name": "Null"}
    ]
}'''

def convertedJSONMap = new JsonSlurper().parseText(json)

def list = convertedJSONMap.items.collect { it.version }

println list.inspect()

Вывод:

['1.23', '1.14.0', '2.11', '8.0', '2.32', '4.11.2.3']

Groovy также предоставляет оператор распространения *., который может упростить этот пример до чего-то вроде этого:

import groovy.json.JsonSlurper

def json = '''{
    "items": [
        {"id": "ID-001", "version": "1.23", "name": "Something"},
        {"id": "ID-002", "version": "1.14.0", "name": "Foo Bar"},
        {"id": "ID-003", "version": "2.11", "name": "Something else"},
        {"id": "ID-004", "version": "8.0", "name": "ABC"},
        {"id": "ID-005", "version": "2.32", "name": "Empty"},
        {"id": "ID-006", "version": "4.11.2.3", "name": "Null"}
    ]
}'''

def convertedJSONMap = new JsonSlurper().parseText(json)

def list = convertedJSONMap.items*.version

println list.inspect()

Или даже это (вы можете заменить *.version на .version):

import groovy.json.JsonSlurper

def json = '''{
    "items": [
        {"id": "ID-001", "version": "1.23", "name": "Something"},
        {"id": "ID-002", "version": "1.14.0", "name": "Foo Bar"},
        {"id": "ID-003", "version": "2.11", "name": "Something else"},
        {"id": "ID-004", "version": "8.0", "name": "ABC"},
        {"id": "ID-005", "version": "2.32", "name": "Empty"},
        {"id": "ID-006", "version": "4.11.2.3", "name": "Null"}
    ]
}'''

def convertedJSONMap = new JsonSlurper().parseText(json)

def list = convertedJSONMap.items.version

println list.inspect()

Все примеры дают одинаковый вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...