Я написал рекурсивную функцию для прохождения через JSON и создания Singular Map.Ниже приведена полная функция преобразования вложенной Карты в единственную Карту.
import groovy.json.JsonSlurper
String urlString = "https://pastebin.com/raw/DAGee5Ad"
def parsedJson = new JsonSlurper().parse(urlString.toURL())
Map<String, String> result = new LinkedHashMap();
public void toMap(Object json, String key, Map result){
json = [(key): json]
json.each {k, v ->
if( v instanceof Map ){
v.each { k1, v1 ->
if (v1 instanceof Map)
toMap(v1, k + "_" + k1 , result)
else if(v1 instanceof List){
def count = 1
v1.each{ v2 ->
toMap(v2, k + k1 + count.toString(), result)
count = count + 1
}
}
else
result.put(k + "_" + k1, v1)
}
}
}
}
//Calling the function
toMap(parsedJson, "json", result)
//Printing the result
result.each{ k, v ->
println "${k}: ${v}"
}
Вывод:
json_glossary_title: example glossary
json_glossary_GlossDiv_title: S
json_glossary_GlossDiv_GlossList_GlossEntry_ID: SGML
json_glossary_GlossDiv_GlossList_GlossEntry_SortAs: SGML
json_glossary_GlossDiv_GlossList_GlossEntry_GlossTerm: Standard Generalized Markup Language
json_glossary_GlossDiv_GlossList_GlossEntry_Acronym: SGML
json_glossary_GlossDiv_GlossList_GlossEntry_Abbrev: ISO 8879:1986
json_glossary_GlossDiv_GlossList_GlossEntry_GlossDef_para: A meta-markup language, used to create markup languages such as DocBook.
json_glossary_GlossDiv_GlossList_GlossEntry_GlossSee: markup