Rekursives Extrahieren von JSON-Feldwerten in Groovy
Ich muss eine Methode implementieren, die eine Zeichenfolge von JSON nach einem bestimmten @ durchsuchtargetField
und geben entweder den Wert dieses Feldes zurück (falls vorhanden) odernull
(falls nicht):
// Ex: extractFieldValue(/{ "fizz" : "buzz" }/, 'fizz') => 'buzz'
// Ex: extractFieldValue(/{ "fizz" : "buzz" }/, 'foo') => null
String extractFieldValue(String json, String targetField) {
// ...
}
Diese Lösung muss rekursiv sein und auf jeder Verschachtelungsebene in der (hierarchischen) JSON-Zeichenfolge funktionieren. Es muss auch für JSON-Arrays funktionieren.
Mein bisher bester Versuch:
String extractFieldValue(String json, String targetField) {
def slurper = new JsonSlurper()
def jsonMap = slurper.parseText(json)
jsonMap."${targetField}"
}
Dies funktioniert nur bei JSON-Feldern der obersten Ebene (nicht verschachtelt). Ich habe die Google-Götter gefragt, wie sie @ verwenden solleJsonSlurper
rekursiv, konnte aber nichts Sinnvolles finden. Irgendwelche Ideen hier?