无法从 START_ARRAY 令牌中反序列化“Books”的实例
Cannot deserialize instance of `Books` out of START_ARRAY token
任何人都可以帮助我,因为我真的不知道如何解决我的问题:
- 我只有一个简单的 GET 请求,在响应正文中包含这样的数组:
[
{
"bookingid": 12
},
{
"bookingid": 8
},
{
"bookingid": 25
},
{
"bookingid": 6
},
{
"bookingid": 29
},
{
"bookingid": 20
},
{
"bookingid": 17
},
{
"bookingid": 22
},
{
"bookingid": 30
},
{
"bookingid": 26
},
{
"bookingid": 3
},
{
"bookingid": 2
},
{
"bookingid": 18
},
{
"bookingid": 14
},
{
"bookingid": 9
},
{
"bookingid": 11
},
{
"bookingid": 4
},
{
"bookingid": 13
},
{
"bookingid": 15
},
{
"bookingid": 19
},
{
"bookingid": 7
},
{
"bookingid": 5
},
{
"bookingid": 21
},
{
"bookingid": 24
},
{
"bookingid": 27
},
{
"bookingid": 33
},
{
"bookingid": 31
},
{
"bookingid": 1
},
{
"bookingid": 23
},
{
"bookingid": 28
},
{
"bookingid": 32
},
{
"bookingid": 16
},
{
"bookingid": 10
}
]
我只想通过将 Rest Assured 与 POJO 类
一起使用来发送 GET
请求
我的 POJO 类:
3a。图书 class 的 List 对象的 ID 为:
package pojo;
import java.util.List;
public class Books {
private List<Ids> bookId;
public List<Ids> getBookId() {
return bookId;
}
}
- 第二个 class - 带有书籍 ID 的 ID
package pojo;
public class Ids {
private String bookingid;
public String getBookingid() {
return bookingid;
}
}
- 测试class:
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
public class Books {
@Test
public void GetBooks() {
RestAssured.baseURI = "https://restful-booker.herokuapp.com/booking";
given().when().get().as(Books.class);
}
}
当我运行这个测试我有错误:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `Books` out of START_ARRAY token
at [Source: (String)"[{"bookingid":10},{"bookingid":21},{"bookingid":4},{"bookingid":9},{"bookingid":14},{"bookingid":2},{"bookingid":19},{"bookingid":15},{"bookingid":5},{"bookingid":3},{"bookingid":12},{"bookingid":7},{"bookingid":20},{"bookingid":1},{"bookingid":16},{"bookingid":17},{"bookingid":13},{"bookingid":6},{"bookingid":11},{"bookingid":18}]"; line: 1, column: 1]
您必须反序列化为图书 ID 列表。
这个
given().when().get().as(Books.class);
应该是
given().when().get().as(Ids[].class);
我在这里看到很多问题:
你测试class,最外层的POJO都叫Books
。您要反序列化到哪一个?
在输入 JSON 中,键名为 bookingid
,在代码中为 bookingId
(注意大写 I
。
为什么你有一个外部 class Books
(作为 POJO)?从 JSON 的格式来看,反序列化为 Ids
的数组似乎更合乎逻辑,因为这代表一个 ID,所以它可能应该命名为 Id
.
任何人都可以帮助我,因为我真的不知道如何解决我的问题:
- 我只有一个简单的 GET 请求,在响应正文中包含这样的数组:
[
{
"bookingid": 12
},
{
"bookingid": 8
},
{
"bookingid": 25
},
{
"bookingid": 6
},
{
"bookingid": 29
},
{
"bookingid": 20
},
{
"bookingid": 17
},
{
"bookingid": 22
},
{
"bookingid": 30
},
{
"bookingid": 26
},
{
"bookingid": 3
},
{
"bookingid": 2
},
{
"bookingid": 18
},
{
"bookingid": 14
},
{
"bookingid": 9
},
{
"bookingid": 11
},
{
"bookingid": 4
},
{
"bookingid": 13
},
{
"bookingid": 15
},
{
"bookingid": 19
},
{
"bookingid": 7
},
{
"bookingid": 5
},
{
"bookingid": 21
},
{
"bookingid": 24
},
{
"bookingid": 27
},
{
"bookingid": 33
},
{
"bookingid": 31
},
{
"bookingid": 1
},
{
"bookingid": 23
},
{
"bookingid": 28
},
{
"bookingid": 32
},
{
"bookingid": 16
},
{
"bookingid": 10
}
]
我只想通过将 Rest Assured 与 POJO 类
一起使用来发送GET
请求我的 POJO 类:
3a。图书 class 的 List 对象的 ID 为:
package pojo;
import java.util.List;
public class Books {
private List<Ids> bookId;
public List<Ids> getBookId() {
return bookId;
}
}
- 第二个 class - 带有书籍 ID 的 ID
package pojo;
public class Ids {
private String bookingid;
public String getBookingid() {
return bookingid;
}
}
- 测试class:
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
public class Books {
@Test
public void GetBooks() {
RestAssured.baseURI = "https://restful-booker.herokuapp.com/booking";
given().when().get().as(Books.class);
}
}
当我运行这个测试我有错误:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `Books` out of START_ARRAY token
at [Source: (String)"[{"bookingid":10},{"bookingid":21},{"bookingid":4},{"bookingid":9},{"bookingid":14},{"bookingid":2},{"bookingid":19},{"bookingid":15},{"bookingid":5},{"bookingid":3},{"bookingid":12},{"bookingid":7},{"bookingid":20},{"bookingid":1},{"bookingid":16},{"bookingid":17},{"bookingid":13},{"bookingid":6},{"bookingid":11},{"bookingid":18}]"; line: 1, column: 1]
您必须反序列化为图书 ID 列表。
这个
given().when().get().as(Books.class);
应该是
given().when().get().as(Ids[].class);
我在这里看到很多问题:
你测试class,最外层的POJO都叫
Books
。您要反序列化到哪一个?在输入 JSON 中,键名为
bookingid
,在代码中为bookingId
(注意大写I
。为什么你有一个外部 class
Books
(作为 POJO)?从 JSON 的格式来看,反序列化为Ids
的数组似乎更合乎逻辑,因为这代表一个 ID,所以它可能应该命名为Id
.