Способ глубокого обхода Groovy-объекта с точкой в строке с помощью GPath

У меня ситуация, когда я запрашиваю MongoDB со строкой для поля, которое находится на глубине более одного уровня в иерархии объектов. Этот запрос должен быть строкой. Так, например, я запрашиваю что-то вроде этого в Groovy:

def queryField = 'a.b.c'  //this is variable and can be different every time
def result = mongodb.collection.findOne([queryField:5])

Проблема не возникает, что в результате я хочу найти значение вложенного поля. С помощью GPath я мог бы пройти один уровень глубиной и получить значение a, делая это

def aObj = result."a"  //or result["a"]

Однако я хочу пойти глубже, сделав что-то вроде этого:

def queryField = "a.b.c"       //this can change every time and is not always 'a.b.c'
def cObj = result[queryField]  //since field is variable, can't just assume result.a.b.c

Это не работает в Groovy прямо сейчас. Есть ошибка в журналеВот, но мне было интересно, есть ли лучший способ использовать этот сценарий, который немного чище, чем я, разбирая строку, разделяя ее на точку, а затем создавая обход объекта. Обратите внимание, что «a.b.c» является переменной и неизвестной во время выполнения (например, это может быть «a.b.d»).

Ответы на вопрос(1)

Ваш ответ на вопрос