плохо знаком с groovy и кодированием в целом. Попытка сделать следующее: (Я просмотрел много предыдущих вопросов и ответов в stackoverflow, но, похоже, ни одно из найденных решений не работает)
У меня есть следующее JSON, из которого мне нужно получить список / строку имен поставщиков, т. е. выходные данные должны выглядеть примерно так: «поставщик 1, поставщик 2, поставщик 3»
[
{
"id":217564,
"created-at":"2020-01-22T08:59:57+00:00",
"state":"submitted",
"supplier":
{
"name":"supplier 1"
}
},
{
"id":217565,
"created-at":"2020-01-22T09:00:00+00:00",
"state":"submitted",
"supplier":
{
"name":"supplier 2"
}
},
{
"id":217566,
"created-at":"2020-01-22T09:00:48+00:00",
"state":"submitted",
"supplier":
{
"name":"supplier 3"
}
}
]
Я использовал следующий скрипт groovy, чтобы распечатать все имена поставщиков в списке:
import groovy.json.*;
@CustomScriptAction(
input = ['json_response'],
output = 'suppliers'
)
def CustomScriptAction14()
{
def object = new JsonSlurper().parseText(json_response.toString())
def suppliers = "No suppliers"
if(object != null && !object.isEmpty())
{
for(def i =0; i<object.size();i++)
{
suppliers = RString.of(object[i].'supplier'.name.toString());
}
}
return suppliers
}
Я получил вывод: "поставщик 3"
Проблема в том, что этот скрипт дает мне только последнего поставщика в l oop вместо того, чтобы итерировать весь l oop и распечатка всех поставщиков. Поэтому я попробовал другой сценарий:
import groovy.json.*;
@CustomScriptAction(
input = ['json_response'],
output = 'suppliers'
)
def CustomScriptAction14()
{
def object = new JsonSlurper().parseText(json_response)
def suppliers = object.findAll { it.value instanceof List }
.values()
.flatten()
.collect { [it.'supplier'.'name'] }
}
return suppliers
Но при этом я получаю пустой ответ.
Что я делаю не так?