首页 > 解决方案 > 使用 JsonPath Java 获取字符串值

问题描述

我使用 JsonPath 断言从 api 响应返回的一些值,但断言响应有一个小问题。

这是我得到的回应:

[{"Id":75969,StartDate":"2016-07-01","EndDate":"2021-04-30","duration":5640}]

可以说我想在开始日期断言。我创建的方法如下所示:

   public void checkStartDate(String expectedStartDate) {

    String responseBody = response.getBody().asString();

    JsonPath values = new JsonPath(responseBody);

    Assert.assertEquals(expectedStartDate,values.getString("startDate"));
}

我传递给该方法的 expectedStartDate 是 2016-07-01,我从 JsonPath 对象返回的日期是 [2016-07-01],这会导致断言失败。

有谁知道我可以用 JsonPath 做什么,以便从我从响应字符串中提取的值中删除方括号?

标签: javajsonpathrest-assured-jsonpath

解决方案


我认为问题是响应是一个对象数组,而不仅仅是一个对象?所以你想检查一下jp.getString("[0].StartDate")

工作示例:

JsonPath jp = JsonPath.from("[{\"Id\":75969,\"StartDate\":\"2016-07-01\",\"EndDate\":\"2021-04-30\",\"duration\":5640}]");
System.out.println("2016-07-01".equals(jp.getString("[0].StartDate")));

印刷:true


推荐阅读