У меня было требование преобразовать ответ JSON в файл csv.Я смог успешно использовать отличный код Тима Йейтса отсюда: Groovy-код для преобразования json в CSV-файл
Теперь мне нужно включить вложенную подкарту JSON в csv.Соотношение между картой и вложенной картой составляет 1: 1.
Мне не удалось получить правильный синтаксис для оператора сбора, который будет извлекать как проанализированную карту, так и ключ / значения вложенной карты.
Пример JSON
{items=
[
{
created_at=2019-03-27
, entity_id=1
, extension_attributes=[]
},
{
created_at=2019-03-27
, entity_id=2
, extension_attributes= { employee_id=Emp1, employee_type=CSR}//nested submap
}
]}
Groovy
import groovy.json.*
def data = new JsonSlurper().parseText( json ); //"json" is from GET request
def columns = ["created_at","entity_id","employee_id","employee_type"]
def encode = { e -> e ? /"$e"/ : "$e"}
requestFile.append( columns.collect { c -> encode( c ) }.join( ',' ) + '\n');
requestFile.append( data.items.collect { row ->columns.collect { colName -> encode( row[ colName ] ).replaceAll("null","") }.join( ',' )}.join( '\n' ) );//unsure how to use data.items.collect to fetch submap
Я бы хотел 1) Преобразовать JSON следующим образом, чтобы легко собрать каждый ключ / значение:
...
{
created_at=2019-03-27
, entity_id=2
, employee_id=Emp1
, employee_type=CSR
}
...
или 2) Узнайте, есть ли способ использовать метод сбора в Groovy для извлечения карты / подкарты в виде плоской карты.
К сожалению, я не программист по профессии, и любая помощь будет признательна!