Массив Json для сопоставления с использованием JsonSlurper

Я хочу создать карту данных со значением pid в качестве ключа и именем в качестве массива для массива json. Вот структура json:

{
"measurements": [
    {
        "pid": 6691,
        "name": "lung",
        "measurement": "qualityFactor",
    },
    {
        "pid": 1106,
        "name": "kidney",
        "measurement": "qualityFactor",
    },
    {
        "id": 119,
        "name": "pancreas",
        "measurement": "qualityFactor",
    },

]

}

Вот моя попытка с Groovy, но я застрял:

    def jsonSlurper= new JsonSlurper()
    Object objs=jsonSlurper.parseText(jsonData) 
    List pp =objs.data 
    Map<String,String> m=new HashMap()
    pp.each{ it ->
        it.collect{Map mm ->
            println "Map m is ${mm}"

        }
    }

Я хочу, чтобы карта выглядела как ["6691": "легкие", "1106": "почки" ....] и т. д.

Как я могу это сделать?

measurements.collectEntries{ [it.pid, it.name ] }
cfrick 24.05.2019 09:55
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
1
452
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как полный ответ с исправленным JSON:

def json = '''{
    "measurements": [
        {
            "pid": 6691,
            "name": "lung",
            "measurement": "qualityFactor",
        },
        {
            "pid": 1106,
            "name": "kidney",
            "measurement": "qualityFactor",
        },
        {
            "pid": 119,
            "name": "pancreas",
            "measurement": "qualityFactor",
        }
    ]
}
'''

import groovy.json.*

def parsed = new JsonSlurper().parseText(json)
def map = map.measurements.collectEntries { [it.pid.toString(), it.name] }

Благодаря тонну! Очень поучительное решение

BreenDeen 24.05.2019 13:40

Другие вопросы по теме