Groovy:根据 XML 规范更正无效的 JSON
Groovy: Correct invalid JSON as per XML specifications
我正在尝试更正传入 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"......
您可以使用 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
我正在尝试更正传入 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"......
您可以使用 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