Мне нужно реализовать метод, который будет сканировать строку JSON для определенного targetField
и либо вернуть значение этого поля (если оно существует), либо null
(если это не так) :Рекурсивно извлекать значения полей JSON в Groovy
// Ex: extractFieldValue(/{ "fizz" : "buzz" }/, 'fizz') => 'buzz'
// Ex: extractFieldValue(/{ "fizz" : "buzz" }/, 'foo') => null
String extractFieldValue(String json, String targetField) {
// ...
}
Это решение должно быть рекурсивной и работать на любом вложенности уровне в иерархической() JSON строки. Также он должен работать и для массивов JSON.
Моя лучшая попытка до сих пор:
String extractFieldValue(String json, String targetField) {
def slurper = new JsonSlurper()
def jsonMap = slurper.parseText(json)
jsonMap."${targetField}"
}
Это работает только на верхнем уровне (не вложенных) в формате JSON полей. Я попросил Google Gods использовать рекурсивно JsonSlurper
, но не нашел ничего полезного. Есть идеи?
что если множественность матч? –
Довольно точно, когда вы наклеили JSON на карту, вы можете использовать что-то вроде http://stackoverflow.com/questions/6185746/groovy-map-find-recursive –
Good point @tim_yates - я был бы доволен взяв первое найденное значение. – smeeb