두 개의 서로 다른 웹 응답에 동일한 객체 구조를 사용하기 때문에 직렬화 문제가 있습니다. '검색'에서는 객체의 배열을 가져오고 '세부 사항'에서는 하나의 객체 만 얻습니다.gson.fromJson - deserialization 실패
검색 코드 :
InputStream source = Helper.retrieveStream("http://<domainname>/search.jsp?action=search&q=" + query);
Reader reader = new InputStreamReader(source);
Gson gson = new Gson();
SearchObj searchResponse = gson.fromJson(reader, SearchObj.class);
세부 코드 : 나는 같은 객체 hireachy와 응답을 서비스에서
InputStream source = Helper.retrieveStream("http://<domainname>/search.jsp?action=detail&id=" + id);
TopObject -> SearchResponse -> 응답하지만, 첫 번째 경우 (검색) Response []의 배열을 얻었고 두 번째 경우 (Details)에서 단일 Response 객체를 얻습니다.
분명히 코드는 단지 하나의 응답 대신 Response의 배열을 기대하기 때문에 두 번째 시나리오에서는 내 직렬화가 실패합니다.
어노테이션 @SerializedName을 사용하여 속성의 이름을 변경할 수있는 것처럼 객체의 이름을 변경할 수 없다는 것을 깨달았습니다.
의견이 있으십니까?
다른 도메인 개체를 만들어 TopObject -> SearchResponse -> Response [] & TopObject -> DetailsResponse -> Response로 구분하여 처리하십시오. – yorkw
클래스 이름에 주석을 달 수 없기 때문에 "Response"객체와 "Response []"배열 객체를 어떻게 처리 할 수 있습니까? – NiTiN
아마도 두 응답의 JSON 소스를 붙여 넣을 수 있습니까? 또한 개체의 계층을 붙여 넣으십시오. 감사 – styler1972