【发布时间】:2016-04-11 23:35:46
【问题描述】:
如何将JSONArray 放入RequestBody 而不引发运行时异常?
@Multipart
@POST("/call_method")
Call<MyResponse> callMethod(@Part("token")RequestBody token,@Part("params")RequestBody params);
我需要将JSONArray 放入参数中。我目前在做什么:
callMethod(RequestBody.create(MediaType.parse("text/plain"), token),
RequestBody.create(MediaType.parse("text/plain"), jsonArrayParams));
但是当我执行这个方法时,我会得到一个运行时异常:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line
非常有趣:请求已执行(通过 CharlesProxy 检查),但由于运行时异常,我看不到它的结果。 如何修复此错误?
【问题讨论】:
-
执行没问题,你的问题出在响应中,因为你声明接收一个对象,而你得到 Array 作为响应
Call<MyResponse>... 应该更改为接收数组(从响应 JSON 解析) -
通过 Postman 检查响应 - 我得到 JSONObject 作为响应并在 MyResponse 中声明单个对象。
-
当我尝试放置 JSONObject - 执行很好,但服务器没有收到 JSONObject,只有 JSONArray
-
@Yazan 你是对的。我不专心,注意到方括号...
-
很高兴听到这个消息,如果您选择接受,我已经发布了完整的答案