java - 请放心 : Extracting value from JSON Array

标签 java json rest-assured rest-assured-jsonpath

我正在尝试使用 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/

相关文章:

java - 不区分大小写的 POSIX 正则表达式在 Java Pattern & Matcher 中不区分大小写

java - 每个端点的 Camel 拦截器,而不是每个 CamelContext

ios - 使用内容类型应用程序/JSON iOS 未获得 JSON 响应

json - 斯卡拉/Play : JSON serialization issue

java - 放心 : java. lang.AssertionError:JSON 路径正文不匹配

java - 如何跳过Salesforce的登录页面?

java - 如何将 JPanel 及其组件另存为 JPEG

ios - 如何减少responseJSON 中的样板文件,就像我使用 URLRequestConvertible 对相关的 Web 调用进行分组一样

java - 多个 POST 请求在第二秒出现 500 错误

java - Eureka RestTemplate 和 SSL