-1

我正在尝试纠正传入的 JSON,因为我有一个 JSON 到 XML 转换器。我希望将字段等 1Doc1 中的前导数字替换为 S_Doc1 等。此外,我需要从 JSON 中替换无效的 XML 元素名称,例如 Slash 等。这是我的代码,但它不起作用:

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"......
4

1 回答 1

0

您可以使用eachWithIndexkey 来使用和更新列表中的元素,而不是尝试操作输入字符串:

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
于 2020-01-24T15:23:43.410 回答