두 개의 다른 JSON 응답을 구문 분석하는 데 문제가 있습니다.다른 JSON 배열 응답
1 :
{
"gear": [
{
"idGear": "1",
"name": "Nosilec za kolesa",
"year": "2005",
"price": "777.0"
}, {
"idGear": "2",
"name": "Stresni nosilci",
"year": "1983",
"price": "40.0"
}
]
}
2 : 이것은 내가 편안 API에서 얻을 JSON 응답입니다 내 테스트 클라이언트에서 얻을이 응답. 목록에 일부 값을 추가 한 다음 출력을 테스트하기 위해 gson.toJson
을 사용했습니다.
[
{
"idGear": "1",
"name": "lala",
"year": 2000,
"price": 15.0
}, {
"idGear": "2",
"name": "lala2",
"year": 2000,
"price": 125.0
}
]
그들은 모두 유효하지만, 두 번째는 성공적으로 다음과 같이 이의를 역 직렬화되었다 : 첫 번째로
Type listType = new TypeToken<List<Gear>>() {}.getType();
List<Gear> gears= (List<Gear>) gson.fromJson(json, listType);
, 나는 같은 방법으로 직렬화하려고했지만, 난이 오류가 발생합니다.
편집
API 방법 :
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Gear> getGear() {
List<Gear> gears = gearDAO.getGears();
if (!gears.isEmpty()) {
return gears;
} else
throw new RuntimeException("No gears");
}
클라이언트 직렬화 코드 :
List<Gear> list = new ArrayList<Gear>();
Gear o = new Gear();
o.setPrice(15);
o.setYear(2000);
o.setName("asds");
Type listTypes = new TypeToken<List<Gear>>() {}.getType();
gson.toJson(list, listTypes);
편안한 API와 testClient가 모두 'List'을 (를) 반환하지만 응답이 다릅니다. 왜 그런지 몰라? –
글쎄, 내가 말했듯이, API는 단지'List'를 반환하지 않습니다 ... 그것은'List' 인 필드를 포함하고있는 객체를 반환하고 있습니다.실제로 반환하는 구체적인 데이터 유형은'Map '이지만'List '이 아닙니다 ...이 API는 사용자가 제어하지 않는다고 가정합니다. REST API가 이러한 방식으로 데이터를 반환하는 것은 매우 일반적인 일이며 항상 필드 "응답"(또는 "gears") 또는 그와 유사한 객체가 포함 된 객체에 포함되어 있습니다. –
MikO
API가 내 것이고 List를 돌려주고 있습니다. 그래서 나는 혼란스러워합니다. –