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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage