Свести JSON с помощью JsonSlurper

Попытка чтения и преобразования файла JSON, в котором есть входной файл:

{
  "id": “A9”,
  "roles": [
  {"title": “A”, “type”: “alpha” },
  {"title": “B”, “type”: “beta” },
  ]
},

{
  "id": “A10”,
  "roles": [
  {"title": “D”, “type”: “delta” },
  ]
}, 

Но требует преобразования для библиотеки, которая ожидает значения на том же уровне:

{
  "roles": [
  {"id": “A9”, "title": “A”, “type”: “alpha” },
  {"id": “A9”, "title": “B”, “type”: “beta” },
  ]
},

{
  "roles": [
  {"id": “A10”, "title": “D”, “type”: “delta” },
  ]
}, 

Я могу прочитать ввод с помощью JsonSlurper, но застрял на том, как его денормализовать.

1 ответ

Решение

С этим data.json (обратите внимание, что я должен был очистить запятые, поскольку JSON-анализатор Groovy их не принимает):

{
  "records":[{
    "id": "A9",
    "roles": [
      {"title": "A", "type": "alpha" },
      {"title": "B", "type": "beta" }
    ]
  },
  {
    "id": "A10",
    "roles": [
      {"title": "D", "type": "delta" }
    ]
  }]
}

Вы можете сделать это следующим образом:

def parsed = new groovy.json.JsonSlurper().parse(new File("data.json"))
def records = parsed.records
records.each { record ->
  record.roles.each { role ->
    role.id = record.id
  }
  record.remove('id')
}
Другие вопросы по тегам