2013-03-20 2 views
29

의 내가 자바 Person 클래스가 있다고 가정 해 봅시다 REST 일반 목록 직렬화

Person bob = given().when().get("person/Bob/").as(Person.class); 

어떻게 REST Assured를 사용하여이 JSON arr을 deserialize합니까? y

List<Person>? 예를 들어,이 편리 할 것입니다 :

List<Person> persons = given().when().get("person/").as(Person[].class); 

UPDATE : 목록에 캐스팅처럼 나머지-피보험자 1.8.1이 보인다 사용

List<Person> persons = given().when().get("person/").as(...); 
+4

+1 잘 서식 잘 묻는 질문을 시도 할 수도 있으므로 다른 버전을 확인, 동작은 버전에 따라 다릅니다 . – Johan

답변

39

내가 원하는 것을 달성하는 방법을 발견 더 이상 지원되지 않습니다. 이것은 사람들을 위해 내 경우

+0

이 나를 위해 작동하지 않았습니다. java.lang.NoSuchMethodError : com.fasterxml.jackson.databind.introspect.AnnotatedMethod.getParameterType (I). 이 물건에 대한 전제 조건이 있습니까? – Sarief

+1

완벽하게 작동합니다. https://mvnrepository.com/artifact/io.rest-assured/rest-assured/3.0.1 – Ramu

+0

내 버전은 2.4.1입니다. 그래서 그것이 이유 일 수 있습니다. – Sarief

6

또한이 작업을 할 수있는 : 당신은 선언과 같은 객체 배열이 필요 인정받은 대답이 더 이상 효과가 없다는 것을 알게 된 사람.

List<Entity> list = new ArrayList<>(); 
    list = given() 
      .contentType(CONTENT_TYPE) 
     .when() 
      .get(getRestOperationPath()) 
     .then() 
      .extract().body().as(list.getClass()); 

잘하면, getRestOperationPath가 rest operation path를 반환하고 있음을 알 수 있습니다. 및 CONTENT_TYPE은 콘텐츠 유형 (응용 프로그램, 예를 들어/JSON)

UPD에 대한 자리 표시 자입니다 : 당신이 다른 접근

+0

고맙습니다. "get (0)"은 내가 필요한 것입니다. – asmaier

6

했다

expect(). 
body("get(0).firstName", equalTo("Mike")). 
when(). 
get("person/"); 

") (기대"사용에 관심이 있다면

Person[] persons = given().when().get("person/").as(Person[].class); 
+2

정답이어야합니다. 깨끗하고 간단하며 최신 응답. –