我正在尝试使用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]
显然,这只是我没有正确使用assert()
方法。
改变了
assertEquals(e,hasItem(MyErrorType.UNAUTHORIZED.error())
到
assertTrue(e.contains(MyErrorType.UNAUTHORIZED.error())
json的解析对
ArrayList正确完成
有了rest assured,您还可以在rest调用中执行链式断言,如下所示:
given()
.spec(myRequestSpecification)
.contentType(ContentType.JSON)
.body(myPayload)
.post("/my-api-path") //this returns Response
.then() //but this returns ValidatableResponse; important difference
.statusCode(200)
.body("notices", hasSize(0)) // any applicable hamcrest matcher can be used
.body("errors", hasSize(1))
.body("errors", contains(MyErrorType.UNAUTHORIZED.error()));
或者,您可以指定“errors”的数组索引来删除方括号。例如:
List<String> e = r.getBody().jsonPath().getList("errors[0].code");
然后你可以使用“等于”而不是“包含”
我试图从JSON中提取值,并将其存储在String List中,因为稍后我需要检查我在csv文件中的值是否存在于此List中。 任何人都可以帮我建立一个路径来提取它吗? 现在我在我的控制台上得到了这个。**(它只返回了十个,因为我更改了“limit”参数。 我的代码直到现在: 下面您可以找到JSON结构,我只需要对象“标识符”数组中的所有“accountId”。
我正在收到以下结构的响应: ] 每当我想提取JSON属性时,例如描述,最终的对象不是我所期望的。它创建具有ArrayString的列表。 如何将值从此JSON对象获取到包含值的简单列表?谢谢
我得到的回应是这样的: 我有一个json回复: 我可以用放心的方法提取字符串吗?
问题内容: 我以这种方式得到回应: 我在responseBody中有一个json: 是否可以仅使用此值= 39将其提取为字符串? 问题答案: 我找到了答案:) 使用JsonPath或XmlPath(如果您有XML)从响应主体获取数据。 就我而言:
问题内容: 我知道它是一个数组,但是我对JSON完全陌生,需要帮助理解它的结构,这是我提取数据的尝试: 我拥有的JSON数据如下所示: 我对这些东西的掌握并不强,因此感谢所有帮助。 问题答案: 这是个主意: 它应该可以工作(如果有编译错误,请随时投诉)
我得到错误:“com.google.gson.jsonSyntaxException:java.lang.IllegalStateException:Expected BEGIN_OBJECT但是BEGIN_ARRAY位于第1行column 283 path$.items.Promended[0].images” 我请求帮助从json对象提取数据。 我只需要删除类'images',并将'urls'