Rest assured java.lang.IllegalArgumentException:无效的JSON表达式:Script1.groovy:1:意外标记::@第1行,第36列。天气[*]。说明
我刚开始重新发行并尝试使用以下代码:Rest assured java.lang.IllegalArgumentException:无效的JSON表达式:Script1.groovy:1:意外标记::@第1行,第36列。天气[*]。说明,rest-assured,Rest Assured,我刚开始重新发行并尝试使用以下代码: @Test public void testJsonPath() { Response response = RestAssured .given() .param("id", "2172797") .param("appid", "439d4b804bc8187953eb36d2a8c26a02")
@Test
public void testJsonPath() {
Response response = RestAssured
.given()
.param("id", "2172797")
.param("appid", "439d4b804bc8187953eb36d2a8c26a02")
.when()
.get("https://samples.openweathermap.org/data/2.5/weather");
String value = "weather[*].description";
System.out.println(value);
String data = response.then().contentType(ContentType.JSON).extract().path(value);
System.out.println(data);
}
JSON:
{
"coord": {
"lon": 145.77,
"lat": -16.92
},
"weather": [
{
"id": 802,
"main": "Clouds",
"description": "scattered clouds",
"icon": "03n"
}
],
"base": "stations",
"main": {
"temp": 300.15,
"pressure": 1007,
"humidity": 74,
"temp_min": 300.15,
"temp_max": 300.15
},
"visibility": 10000,
"wind": {
"speed": 3.6,
"deg": 160
},
"clouds": {
"all": 40
},
"dt": 1485790200,
"sys": {
"type": 1,
"id": 8166,
"message": 0.2064,
"country": "AU",
"sunrise": 1485720272,
"sunset": 1485766550
},
"id": 2172797,
"name": "Cairns",
"cod": 200
}
Getting the following error:
java.lang.IllegalArgumentException: Invalid JSON expression:
Script1.groovy: 1: unexpected token: ] @ line 1, column 36.
weather[*].description
为什么使用*时会出现以下错误?。替换时字符串value=“weather[0].description”;它很好用。谁能帮我一下吗
我也检查了邮递员,API给出了正确的输出
Note: When using creating code (weather[*].description) from http://jsonpath.com/. It gives the same output.
If there is anything I am missing anything please let me know as I am new to it. Any help to this would be great.
It can also be great if someone can give me a brief on this and let me know whom to refer to get the best output from this.
为什么使用*时会出现以下错误?。替换时字符串value=“weather[0].description”;它很好用。谁能帮我一下吗 请放心,它使用Groovy的GPath表示法,不要与Jayway的JsonPath语法混淆 编辑: {“用户”:[{“名字”:“sijo”,“姓氏”:“john”,“subjectId”:1,“id”:1},{“名字”:“sonia”,“姓氏”:“sahay”,“subjectId”:2,“id”:2},{“名字”:“shreya”,“姓氏”:“sahay”,“subjectId”:1,“id”:3}],“受试者”:[{“id”:1,“姓名”:“Devops”},{“id”:2,“姓名”:“SDET”} 对于上面的JSON,您可以使用下面的获取所有lastName
JsonPath abc = new JsonPath(res);
String deal = abc.getString("users.lastName");
System.out.println(deal);
请添加代码,以便我可以查看我的问题。Rest Assured使用GPath,因此您将无法使用[*],必须将其编码为[0],或者您也可以使用
.jsonPath().getString(“weather.description”)代码>它可以工作。谢谢如果我有一个JSON,我必须选择all,那么我将如何处理它。在JsonPath中,*的替代选项是什么。例如:{“用户”:[{“名字”:“sijo”,“姓氏”:“john”,“subjectId”:1,“id”:1},{“名字”:“sonia”,“姓氏”:“sahay”,“subjectId”:2,“id”:2},{“名字”:“shreya”,“姓氏”:“sahay”,“subjectId”:1,“id”:3}],“subjects”:[{“id”:1,“name”:“Devops”},{“id”:2,“name”:“SDET”}]}如果我想选择所有的姓氏,那么我该如何选择。很高兴我能帮上忙:)你应该添加更多的标签,这样人们就可以找到你的帖子,代码也可以上色了。