如何从JSONObject创建RequestBody?

时间:2017-02-21 14:33:47

标签: android json retrofit2 okhttp3

我正在使用okhttp3.RequestBody向服务器发送请求, 如果我有JSONObject我需要发送的数据 我正在编写这样的代码:

RequestBody requestBody = new MultipartBody.Builder()
                                .setType(MultipartBody.FORM)
                                .addFormDataPart("id", object.optLong(Comment.TASK_ID_JSON_TAG) + "")
                                .addFormDataPart("type", "IMAGE")
                                .addFormDataPart("latitude", object.optDouble(Comment.LATITUDE_JSON_TAG) + "")
                                .addFormDataPart("longitude", object.optDouble(Comment.LONGITUDE_JSON_TAG) + "")
                                .build();

现在,如果我有大数据的JSONObject,有没有办法直接创建RequestBody? 谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

也许您可以在一个参数中发布所有json对象,并将其发送到服务器。

查看https://stackoverflow.com/a/34180100/1067963

public static final MediaType JSON
    = MediaType.parse("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

String post(String url, String json) throws IOException {
  RequestBody body = RequestBody.create(JSON, json);
  Request request = new Request.Builder()
      .url(url)
      .post(body)
      .build();
  Response response = client.newCall(request).execute();
  return response.body().string();
}

答案 1 :(得分:0)

您可以使用gson进行序列化(等级->实现组:'com.google.code.gson',名称:'gson',版本:'2.7'),然后执行此操作->注意MediaType和setbody函数仅使用两行代码即可:),然后发送请求使用主体...如果要将Java对象作为JSON发送,请执行此操作

公共静态最终MediaType JSON             = MediaType.parse(“ application / json; charset = utf-8”);

@Override
protected void setBody() {
    Gson gson = new Gson();
    String data = gson.toJson(yourObject);
    body = RequestBody.create(JSON, data);

}

///然后您可以构建请求设置此主体(RequestBody主体):)