在API响应中,有时可以是数组,有时可以是字符串.
这里的细节是数组
{ "ts": "2015-06-16 11:28:33","success": true,"error": false,"details": [{ "user_ID": "563", "firstname": "K.Mathan"},{ "user_ID": "566", "firstname": "Surya"},{ "user_ID": "562", "firstname": "IDaya"} ]}
有时细节可以是字符串
{ "ts": "2015-06-16 11:28:33","success": true,"error": false,"details": "no data" }
这里的细节是字符串
如何从这种回应中获取价值
我目前的声明是
@Serializedname(value="details") public List<detailsList> details ;
任何人都可以帮助我找到解决方案吗?
解决方法:
您是否尝试过使用原始回复类型?
@GET("your_url")voID getDetails(Callback<Response> cb);
然后,您可以使用JsONObject和JsONArray解析响应,如下所示:
Callback<Response> callback = new Callback<Response>() { @OverrIDe public voID success(Response detailsResponse, Response response2) { String detailsstring = getStringFromretrofitResponse(detailsResponse); try { JsONObject object = new JsONObject(detailsstring); //In here you can check if the "details" key returns a JsONArray or a String } catch (JsONException e) { } } @OverrIDe public voID failure(RetrofitError error) { });
其中getStringFromretrofitRespone可能是:
public static String getStringFromretrofitResponse(Response response) { //Try to get response body BufferedReader reader = null; StringBuilder sb = new StringBuilder(); try { reader = new BufferedReader(new inputStreamReader(response.getbody().in())); String line; try { while ((line = reader.readline()) != null) { sb.append(line); } } catch (IOException e) { e.printstacktrace(); } } catch (IOException e) { e.printstacktrace(); } return sb.toString();}
总结 以上是内存溢出为你收集整理的android-改装错误:预期为BEGIN_ARRAY,但为STRING全部内容,希望文章能够帮你解决android-改装错误:预期为BEGIN_ARRAY,但为STRING所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)