Вам нужно будет оценить строку, чтобы добраться до нужного вам свойства. Для этого вы можете сделать:
humanProperty.split( /\./ ).inject( human ) { obj, prop -> obj?."$prop" }
(который разбивает humanProperty
на список имен свойств, затем, начиная с объекта human
, вызывает каждое свойство по очереди, передавая результат следующей итерации.
Или вы можете использовать класс Eval, чтобы сделать что-то вроде:
Eval.x( human, "x.${humanProperty}" )
Чтобы использовать нотацию []
, вам необходимо выполнить:
human[ 'face' ][ 'eyes' ]