okhttp使用post提交json数据遇到的问题

okhttp使用post提交集合(list)类型数据

`后台接收数据类型包含string类型和集合类型的json数据,前端转换json数据时,格式出错


问题描述

提示:这里描述项目中遇到的问题:

例如:利用okhttp post集合类型数据时,messagelist内部的数据转成json后格式错误

	后台接收数据结构: messageList是json类型参数,而且内部的 具体数据也是json类型

后台接收数据结构

这里是一开始前端上传的数据结构,其中list是[{},{},{}]的批量数据,一开始我将 {}中的单条数据转成json之后,存入
data_list <arraylist类型>中,再转一次json,并上传

*1.将具体数据转成json格式,并存入data_list*
再将data_list转成json
2.再将data_list转成json
一开始前端上传的数据结构
3.利用okhttp上传给后端
在这里插入图片描述

	此时后端解析数据错误

原因分析:

data_list直接用 jsonobject转成json后,数据有问题,出现了很多 “\”
如下:
在这里插入图片描述


解决方案:

JSONArray是数组,里面存着对象;JSONObect是对象,里面存的是字符串
所以将data_list转成json,应当用JSONArray来转,然后再将jsonArray放入jsonobject提交到后端

在这里插入图片描述

注意jsonobject和jsonArray的使用区别

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 OkHttp3 发送包含 JSON 数据POST 请求,可以按照以下步骤操作: 1. 创建一个 `OkHttpClient` 实例。 2. 创建一个 `RequestBody` 对象,它包含 JSON 数据。 3. 创建一个 `Request` 对象,它包含请求方法(POST)、URL 和 `RequestBody` 对象。 4. 使用 `OkHttpClient` 实例创建一个 `Call` 对象。 5. 调用 `Call` 对象的 `execute()` 方法或 `enqueue()` 方法发送请求。 下面是一个示例代码: ```java OkHttpClient client = new OkHttpClient(); // JSON 数据 String json = "{\"name\":\"John\", \"age\":30}"; // 创建 RequestBody 对象 RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), json); // 创建 Request 对象 Request request = new Request.Builder() .url("https://www.example.com/api/user") .post(requestBody) .build(); // 创建 Call 对象 Call call = client.newCall(request); // 发送请求并处理响应 Response response = call.execute(); String responseData = response.body().string(); ``` 在上面的代码中,我们首先创建了一个 `OkHttpClient` 实例。然后,我们创建了一个包含 JSON 数据的 `RequestBody` 对象,使用 `MediaType.parse()` 方法指定了请求数据的 MIME 类型为 `application/json`。 接下来,我们创建了一个 `Request` 对象,它包含了请求的 URL、请求方法和请求数据。注意,我们使用 `post()` 方法指定了请求方法为 POST,并将 `RequestBody` 对象传递给了该方法。 最后,我们使用 `OkHttpClient` 实例创建了一个 `Call` 对象,并调用了其 `execute()` 方法发送请求。如果请求成功,我们可以通过 `Response` 对象获取响应数据。在上面的代码中,我们使用 `string()` 方法将响应数据转换为字符串。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值