我正在尝试使用 jsonPath 放心地从 JSON 数组中提取值。
JSON 响应示例:
{
"notices": [],
"errors": [
{
"code": "UNAUTHORIZED"
}
]
}
当前测试如下:
@Test(dataProvider = "somePayLoadProvider", dataProviderClass = MyPayLoadProvider.class)
public void myTestMethod(SomePayload myPayload) {
Response r = given().
spec(myRequestSpecification).
contentType(ContentType.JSON).
body(myPayload).
post("/my-api-path");
List<String> e = r.getBody().jsonPath().getList("errors.code");
assertEquals(e, hasItem(MyErrorType.UNAUTHORIZED.error()));
}
但是,我不断收到 [] 错误代码。我只想要这个值。
java.lang.AssertionError: expected
[a collection containing "UNAUTHORIZED"] but found [[UNAUTHORIZED]]
Expected :a collection containing "UNAUTHORIZED"
Actual :[UNAUTHORIZED]
最佳答案
或者,您可以指定“errors”的数组索引来删除方括号。即:
List<String> e = r.getBody().jsonPath().getList("errors[0].code");
然后您可以返回使用“等于”而不是“包含”
关于java - 请放心 : Extracting value from JSON Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45339303/