我有一个Web服务REST:
@Path("/Vehicles")
public class Vehicles{
@GET
@Path("/Cars")
@Produces(aplicattion/json)
public String Cars() {
Car[] cars = Consulting my database...
Gson gson = new Gson();
return gson.toJson(cars);
}
我使用网络服务:
try {
HttpClient httpClient = new DefaultHttpClient();
HttpGet get = new HttpGet(
"http://localhost:8080/Concessionaire/rest/Vehicles/Cars");
HttpResponse resp = httpClient.execute(get);
String respGET = EntityUtils.toString(resp.getEntity());
Gson gson = new Gson();
Cars[] c = gson.fromJson(respGET,Cars[].class);
}catch(Exception e){
}
但是出现了这个异常:预期BEGIN_ARRAY但是第1行第6列的字符串 有什么问题?
答案 0 :(得分:1)
您的方法返回一个String
public String Cars()
客户端代码需要Car数组
Cars[] c = gson.fromJson(respGET,Cars[].class);
Gson在解析json时期望BEGIN_ARRAY事件,而是找到一个String。要解决此问题,请使用泽西Response
类发送Cars []并将返回类型更改为Response
。
return Response.ok(myCarsArray).build();