프로그래밍/java

Expected BEGIN_ARRAY but was BEGIN_OBJECT

승민아 2023. 11. 24. 20:35

다음과 같은 JSON을 받았다.

{
    "status": "success",
    "data": {
        "id": 11,
        "name": "name!",
        "title": "title!",
        "content": "content!",
        "regDate": "2023-11-20T14:04:14"
    },
    "message": "성공했다."
}

 

 

다음과 같은 클래스로 파싱을 시도했더니..

public class InquiryListResponse {
    private String status;
    private List<InquiryData> data;
    private String message;
}

 

 

Expected BEGIN_ARRAY but was BEGIN_OBJECT !!!!!

ARRAY를 예측했더니 OBJECT가 나왔다는 이야기다.

 

그렇다! 내가 data에 담은것은 다음과 같은 리스트가 아니라 오브젝트였다.

Inquiry inquiry = inquiryService.getInquiry(id);
response.setData(inquiry);

보면 Inquiry를 담아버렸다. 리스트에 담아서 넣어줘야하는데 말이다!!

 

다음과 같이 리스트에 담아주자!

Inquiry inquiry = inquiryService.getInquiry(id);
List<Inquiry> listInquiry = Arrays.asList(inquiry); // 리스트로 변환하는 과정 필수 !!

ApiResponse response = new ApiResponse();
response.setStatus(ApiResponse.SUCCESS_STATUS);
response.setData(inquiry);

 

다음과 같이 JSON 응답 data가 [ ] 에 담겨있게 바꼈다.!

이렇게 리스트는 []에 담겨줘야한다!

{
    "status": "success",
    "data": [
        {
            "id": 11,
            "name": "name!",
            "title": "title!",
            "content": "content!",
            "regDate": "2023-11-20T14:04:14"
        }
    ],
    "message": "성공했다."
}