Я разместил этот вопрос в списках рассылки Groovy , но пока не получил ответа. Мне было интересно, если кто-то может помочь здесь. Я повторно публикую соответствующий текст из моего исходного вопроса.
У меня есть вложенный json, который читается через JsonSlurper, а некоторые ключи содержат дефисы. Мне нужно заменить те ключи, которые имеют дефисы, на подчеркивания и преобразовать их обратно в json для последующей обработки. Я просмотрел документацию JsonGenerator.Options и не смог найти никакой документации по этому конкретному требованию.
Я также просмотрел варианты итерации по карте, созданной из JsonSlurper, но, к сожалению, мне не удалось найти эффективное решение, которое итерирует по вложенной карте, изменяет ключи и создает другую карту, которую можно преобразовать в строка Json.
Пример кода
import groovy.json.*
// This json can be nested many levels deep
def inputJson = """{
"database-servers": {
"dc-1": [
"server1",
"server2"
]
},
"discovery-servers": {
"dc-3": [
"discovery-server1",
"discovery-server2"
]
}
}
"""
Мне нужно преобразовать вышеупомянутое в json, которое похоже на пример ниже. Я могу перебирать и конвертировать, используя метод collectEntries
, который работает только на первом уровне, но мне нужно делать это рекурсивно, поскольку входной json может иметь вложенную многоуровневую глубину.
{
"database_servers": {
"dc_1": [
"server1",
"server2"
]
},
"discovery_servers": {
"dc_3": [
"discovery-server1",
"discovery-server2"
]
}
}