使用路径方法放心获取值
Using rest-assured get value using path method
我想从下面的 JSON.
中提取 s.d.url
的值
我正在使用下面的声明,如使用 System.out.println 所示
但我没有得到结果。当字段本身包含“.”
时我该怎么做
JSON
{
"data":{
"H1":{
"com.abc.def":{
"a_enabled":false,
"b_config":true
},
"c.s.urls":{
"s.d.url":"https://url1.com",
"w.p.url":"https://url2.com",
"s.c.url":"https://url3.com"
},
"com.abc.con":{
"e_n":true,
"a_r":false,
"c_t":"XYZMB"
}
},
"dCId":"ABCD"
}
}
ExtractableResponse<Response> spec = given()
.request().log().all()
.expect().statusCode(200)
.when()
.get(EndpointsCloudServices.getConfigUrl() + "?" + params)
.then().log().body()
.extract();
//want to get value of s.d.url
System.out.println("Triage???? " + spec.path("data.H1.c.s.urls.s.d.url"));
试试下面的,它会return值为s.d.url
(注意方括号和单引号):
spec.path("data.H1.['c.s.urls'].['s.d.url']")
甚至更短,如果您确定 s.d.url
是整个 json 文档中的唯一名称:
spec.path("$.['s.d.url']")
接下来,这只是为了说明通过使用 JSON 路径表达式在其名称中包含点的引用字段的常见情况 - 您只需要将字段名称包装在 ['
中并且']
示例JSON:
{
"field.name": "value",
"nested": {
"field.with.dot": {
"field.inside": "anotherValue"
}
}
}
示例有效 JSON访问相应字段值的路径表达式:
$['field.name']
$.['field.inside']
nested.['field.with.dot'].['field.inside']
提示:您可以使用 online evaluator or expression tester
等工具快速测试您的 JSON 路径与您的 json
我想从下面的 JSON.
中提取 s.d.url
的值
我正在使用下面的声明,如使用 System.out.println 所示
但我没有得到结果。当字段本身包含“.”
JSON
{
"data":{
"H1":{
"com.abc.def":{
"a_enabled":false,
"b_config":true
},
"c.s.urls":{
"s.d.url":"https://url1.com",
"w.p.url":"https://url2.com",
"s.c.url":"https://url3.com"
},
"com.abc.con":{
"e_n":true,
"a_r":false,
"c_t":"XYZMB"
}
},
"dCId":"ABCD"
}
}
ExtractableResponse<Response> spec = given()
.request().log().all()
.expect().statusCode(200)
.when()
.get(EndpointsCloudServices.getConfigUrl() + "?" + params)
.then().log().body()
.extract();
//want to get value of s.d.url
System.out.println("Triage???? " + spec.path("data.H1.c.s.urls.s.d.url"));
试试下面的,它会return值为s.d.url
(注意方括号和单引号):
spec.path("data.H1.['c.s.urls'].['s.d.url']")
甚至更短,如果您确定 s.d.url
是整个 json 文档中的唯一名称:
spec.path("$.['s.d.url']")
接下来,这只是为了说明通过使用 JSON 路径表达式在其名称中包含点的引用字段的常见情况 - 您只需要将字段名称包装在 ['
中并且']
示例JSON:
{
"field.name": "value",
"nested": {
"field.with.dot": {
"field.inside": "anotherValue"
}
}
}
示例有效 JSON访问相应字段值的路径表达式:
$['field.name']
$.['field.inside']
nested.['field.with.dot'].['field.inside']
提示:您可以使用 online evaluator or expression tester
等工具快速测试您的 JSON 路径与您的 json