JSONObject转换json时出现nameValuePair

参考博客: Gson to json 的时候,出现nameValuePair

在构造网络请求参数的时候经常需要动态添加某个参数,该参数的值还是一个对象。 例如自己在获取文件列表的时候,最开始只传了当前页码pageNo和每页条目的数量pageSize,这时报文会打印的参数如下:

{"pageSize":10,"pageNo":1}

后来又增加了一个排序的需求, 后端需要客户端多传一个参数nameValuePairs, 它的值是一个对象, 期望的结果如下:

{"sortMapJson":{"file_name":false},"pageSize":10,"pageNo":1}

自己使用JSONObject构造了sortMapJson参数, 代码如下:

HashMap<String, Object> params = new HashMap<>();
 params.put("pageNo", pageNo);
 params.put("pageSize", pageSize);
 JSONObject jsonObject = new JSONObject();
 try {
     jsonObject.put("file_name", true);
     params.put("sortMapJson", jsonObject);
 } catch (JSONException e) {
     e.printStackTrace();
 }

然而打印的参数并不是自己想象中的那样, value的外层多封装了一个nameValuePairs, 如下所示

{"sortMapJson":{"nameValuePairs":{"file_name":true}},"pageSize":10,"pageNo":1}

为什么会是这样呢? 这是因为我们使用了JSONObject, 实际上应该使用JsonObjectJSONObject属于org.json包中的类, JsonObject属于com.google.gson包中的类。 正确的写法如下:

 HashMap<String, Object> params = new HashMap<>();
params.put("pageNo", 1);
params.put("pageSize", 10);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("file_name", false);
params.put("sortMapJson", jsonObject);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值