栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从JSONObject删除nameValuePairs密钥?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从JSONObject删除nameValuePairs密钥?

问题

默认情况下,翻新使用GSON将HTTP正文与JSON相互转换。用@Body注释指定的对象将传递给GSON进行序列化,该序列化基本上将JAVA对象转换为JSON表示形式。此JSON表示形式将是HTTP请求正文。

JSONObject通过name将所有键值映射存储在成员变量中

namevaluePairs
。这是JSONObject实现的摘录:

public class JSonObject {    ...    private final Map<String, Object> namevaluePairs;    ...}

当您将JSONObject传递给@Body批注时,将对这个JSONObject进行序列化,因此HTTP请求正文包含:{“ namevaluePairs”:“
actual JSON Object”}。

解:

将实际的JAVA对象传递给@Body批注,而不是其对应的JSONObject。GSON将负责将其转换为JSON表示形式。

例如

class HTTPRequestBody {   String key1 = "value1";   String key2 = "value2";   ...}// GSON will serialize it as {"key1": "value1", "key2": "value2"}, // which will be become HTTP request body.public interface MyService {    @Headers({"Content-type: application/json",   "Accept: */*"})    @POST("/test")    void postJson(@Body HTTPRequestBody body, Callback<Response> callback);}// UsageMyService myService = restAdapter.create(MyService.class);myService.postJson(new HTTPRequestBody(), callback);

替代解决方案:

建议的解决方案之一是使用TypedInput:

public interface MyService {  @POST("/test")  void postRawJson(@Body TypedInput body, Callback<Response> callback);}String json = jsonRequest.toString();TypedInput in = new TypedByteArray("application/json", json.getBytes("UTF-8"));myService.postRawJson(in, callback);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/368955.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号