Точки выхода в Groovy GPath

Я использую структуру RestAssured на Java, документация которой содержит этот примечание

Обратите внимание, что синтаксис "json path" использует нотацию Groovy GPath и не предназначен для можно спутать с синтаксисом Jayway JsonPath.

Мне нужно проверить следующий JSON:

"_source": {
    "logSource": {
      "logger.name": "LogbackLogger",
    },
}

И такие селекторы, как
_source.logSource.logger.name или
_source.logSource.logger.name[0], не возвращают результата.

Я предполагаю, что это связано с точкой в ​​свойстве logger.name. Если экранирование не выполнено, logger.name интерпретируется, как если бы name находился под logger, что неверно.

Как правильно экранировать символ точки в GPath, чтобы logger.name считался единственным именем свойства?

Спасибо!


person Vlad.Bachurin    schedule 08.06.2017    source источник


Ответы (1)


У вас банальная проблема.

Просто оберните его между single quote, т.е. 'logger.name', так как есть специальный символ.

Вот полный пример:

def string = """{  "_source": {
       "logSource": {
          "logger.name": "LogbackLogger",
      }
    }
}"""

def json = new groovy.json.JsonSlurper().parseText(string)
println json.'_source'.logSource.'logger.name'
person Rao    schedule 08.06.2017
comment
Спасибо за ответ! Я экстраполировал это на случай Java, и решение оказалось действительно тривиальным. Мне нужно было добавить только одинарные кавычки: _source.logSource.'logger.name'[0] - person Vlad.Bachurin; 08.06.2017