Groovy GPath中的转义点

时间:2017-06-08 11:00:25

标签: json groovy rest-assured gpath rest-assured-jsonpath

我在Java中使用RestAssured框架,其文档包含此note

  

请注意" json路径"语法使用Groovy's 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视为单个属性名称?

谢谢!

1 个答案:

答案 0 :(得分: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'