#parsing #groovy #configuration-files
#синтаксический анализ #groovy #конфигурационные файлы
Вопрос:
У меня действительно простая проблема с получением ConfigSlurper
для обработки моей конфигурации
Groovy версия 2.5.6
Вернулся к основам и попробовал этот простой скрипт Groovy:
ConfigSlurper slurper = new ConfigSlurper ()
slurper.parse ("""host='localhost' """)
println slurper.getProperty('host')
/* gives exception :
Caught: groovy.lang.MissingPropertyException: No such property: host for class: groovy.util.ConfigSlurper
groovy.lang.MissingPropertyException: No such property: host for class: groovy.util.ConfigSlurper
at scripts.testSSlurper.run(testSSlurper.groovy:7)
*/
Почему этот простой синтаксический анализ не завершается ошибкой?
Что я здесь делаю не так? Это блокирующее средство для реального кода, который я написал для разбора файла, который также, похоже, ничего не привязывает к slurper.
Ответ №1:
В вашем примере кода есть одно недоразумение. Синтаксический анализ конфигурационного скрипта не изменяет ConfigSlurper
объект, но вместо этого возвращает ConfigObject
. Все, что вам нужно сделать, это записать результат slurper.parse(script)
метода и получить доступ к host
ключу из возвращаемого ConfigObject
экземпляра.
ConfigSlurper slurper = new ConfigSlurper()
def config = slurper.parse(""" host = 'localhost' """)
println config.getProperty("host")
Вывод:
localhost
Комментарии:
1. Как мне работать с переменными… что означает, если у меня есть {host = «localhost»} в переменной, скажем, «str» ?! и localhost находится в «двойных кавычках».. И как нам получить доступ к вложенным элементам, таким как { users { username = «Пользователь»}}
2. Отвечая на мой собственный комментарий: 1-й Замените «» на ‘ ‘, используя .replaceAll( «»», «‘» ) а затем получить доступ к подобному config.porperty.subProperty.subProperty …