开始数组,但是字符串GSON

时间:2013-04-07 11:58:16

标签: rest exception gson

我有一个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列的字符串 有什么问题?

1 个答案:

答案 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();