Если вы используете JsonSlurper
для анализа входного JSON, то любой вложенный объект JSON будет представлен как LazyMap
. Вы можете использовать эту информацию, чтобы собрать все записи из проанализированного объекта JSON (который также является картой) и преобразовать любой объект карты в его строковое представление JSON. Вы можете преобразовать любое значение в строковое представление JSON, используя метод groovy.json.JsonOutput.toJson(object)
.
import groovy.json.JsonOutput
import groovy.json.JsonSlurper
def input = '''{
"a": "1",
"b": {
"c": "2",
"d": {
"e": "3"
}
},
"f": "4"
}'''
def json = new JsonSlurper().parseText(input)
def escaped = json.collectEntries { k,v ->
[(k): v instanceof Map ? new JsonOutput().toJson(v) : v]
}
def output = new JsonOutput().prettyPrint(JsonOutput.toJson(escaped))
println output
Вывод:
{
"a": "1",
"b": "{\"c\":\"2\",\"d\":{\"e\":\"3\"}}",
"f": "4"
}