Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果密钥包含Rest-Assured/Serenity中的空格,如何获取密钥的值?_Java_Json_Rest_Rest Assured_Serenity Bdd - Fatal编程技术网

Java 如果密钥包含Rest-Assured/Serenity中的空格,如何获取密钥的值?

Java 如果密钥包含Rest-Assured/Serenity中的空格,如何获取密钥的值?,java,json,rest,rest-assured,serenity-bdd,Java,Json,Rest,Rest Assured,Serenity Bdd,我试图在Serenity框架中使用Rest Assured来验证端点响应。我向端点发送了一个xml正文,并希望返回JSON响应,如下所示: {"Entry ID" : "654123"} 我想发送XML并在JSON响应中验证键“Entry ID”的值不是空的或null的。问题是,密钥中有一个空格,我相信这会导致错误。以下是我到目前为止的情况: SerenityRest.given().contentType(ContentType.XML) .body(xmlBody) .when().acc

我试图在Serenity框架中使用Rest Assured来验证端点响应。我向端点发送了一个xml正文,并希望返回JSON响应,如下所示:

{"Entry ID" : "654123"}
我想发送XML并在JSON响应中验证键“Entry ID”的值不是空的或null的。问题是,密钥中有一个空格,我相信这会导致错误。以下是我到目前为止的情况:

SerenityRest.given().contentType(ContentType.XML)
.body(xmlBody)
.when().accept(ContentType.JSON).post(endpoint)
.then().body("Entry ID", not(isEmptyOrNullString()))
.and().statusCode(200);
这将产生以下错误:

java.lang.IllegalArgumentException: Invalid JSON expression:
Script1.groovy: 1: unable to resolve class                          Entry 
@ line 1, column 33.
                        Entry ID
                               ^

1 error
我尝试过用不同的方式包装“条目ID”术语,但没有效果:

.body("'Entry ID'", not(isEmptyOrNullString()))
.body("''Entry ID''", not(isEmptyOrNullString()))
.body("\"Entry ID\"", not(isEmptyOrNullString()))
.body("['Entry ID']", not(isEmptyOrNullString()))
.body("$.['Entry ID']", not(isEmptyOrNullString()))

是否可以获取包含Rest Assured中空格的键的值?

您只需使用单引号转义键:

then().body("'Entry ID'", not(isEmptyOrNullString()))
下面是一个示例(在版本3.0.6中测试):


切换到空手道[]它没有这个问题,这里有一个例子:我的想法是,一定是其他东西出了问题。不过,body(“['Entry ID']”)是正确的方法。它使用的是重新发行的jaywayjson路径。也许试着用path来抓取它,然后再验证它?
// Given
String json = "{\"Entry ID\" : \"654123\"}";

// When
JsonPath jsonPath = JsonPath.from(json);

// Then
assertThat(jsonPath.getString("'Entry ID'"), not(isEmptyOrNullString()));