Groovy: исправить неверно JSON согласно XML спецификациям - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь исправить входящий JSON, так как у меня есть конвертер JSON в XML. I sh для замены начального числа в поле et c 1Doc1 на S_Doc1 et c. Также мне нужно заменить недопустимые XML имена элементов из JSON, такие как Sla sh et c. Вот мой код, но он не работает:

def list = new JsonSlurper().parseText( payload )

list.each {
  def oldStr = "" + it
  def newStr = oldStr.replaceFirst("^[^a-zA-Z]+", "S_")
  payload = payload.replaceFirst(oldStr, newStr)   
 }
 return payload

Я получаю входные данные как есть. Кто-нибудь может посоветовать, как это сделать в Groovy. Например, если мой Ввод:

{
"1Document1":
{"Record":{"Header"...….

Выход должен быть

{
"S_Document1":
{"Record":{"Header"......

1 Ответ

0 голосов
/ 24 января 2020

Вы можете использовать eachWithIndex и обновлять элемент в списке, используя клавишу вместо того, чтобы пытаться манипулировать входной строкой:

import groovy.json.JsonSlurper

String json = '[{"1Document1": {"Record":{"Header": "xx"}}}, {"2Document1": {"Record":{"Header": "zz"}}}]'

def list = new JsonSlurper().parseText( json )

list.eachWithIndex {v, k ->
    def newStr = (""+v).replaceFirst("^[^a-zA-Z]+", "S_")
    list[k] = newStr
 }

 println list
...