Объединить два JSON из groovy - PullRequest
0 голосов
/ 27 января 2020

У меня есть 2 JSON файла, и я хочу объединить эти 2 и создать одно JSON сообщение, используя groovy. Основываясь на значении типа, я собираюсь объединить эти два JSON файла.

  • Если заданный «тип» объектов JSON сообщения JSON сообщения 1 не существует в сообщении JSON сообщения2, соответствующий объект JSON должен содержаться в выходных данных JSON message.
  • Все JSON объекты из JSON message2 должны содержаться в выводе JSON message
  • Ожидаемые примеры форматов показаны ниже

Ввод JSON message1

{"message":[{"name":"HelloFile","type": "input"},{"name":"SecondFile","type": "error"}]

Ввод JSON message2

[{"name":"NewFile","type": "input"},{"name":"MyFile","type": "output"}]

Ожидаемый JSON

{"message":[{"name":"NewFile","type": "input"},{"name":"MyFile","type": "output"},{"name":"SecondFile","type": "error"}]}

Я использовал приведенный ниже groovy код .

JsonBuilder jsonBuilder = new JsonBuilder(JSON1)
jsonBuilder.content.message= JSON2
def updatedBody = jsonBuilder.toString()

Из приведенного выше кода я получил следующее сообщение.

{"message":[{"name":"NewFile","type": "input"},{"name":"MyFile","type": "output"}]}

Любая помощь в сортировке это будет высоко ценится.

1 Ответ

1 голос
/ 27 января 2020

Попробуйте использовать JsonSlurper:

import groovy.json.*

​def json1 = '{"message":[{"name":"HelloFile","type": "input"},{"name":"SecondFile","type": "error"}]}'​​​​​​​​​​​​​
def json2 = '[{"name":"NewFile","type": "input"},{"name":"MyFile","type": "output"}]'
def slurper = new JsonSlurper()
def json1Obj = slurper.parseText(json1)
def json2Obj = slurper.parseText(json2)
json1Obj.message+=json2Obj
println JsonOutput.toJson​(json1Obj)​

Это печатает:

{"message":[{"name":"HelloFile","type":"input"},{"name":"SecondFile","type":"error"},{"name":"NewFile","type":"input"},{"name":"MyFile","type":"output"}]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...