Android 改装向序列化JSON多部分字符串添加额外斜杠
我认为这是一种改进,即在使用序列化JSON数据调用服务时向键值对添加额外的斜杠。 我有一个散列映射对象作为多部分字符串传递,我正在使用Gson将其转换为JSON字符串Android 改装向序列化JSON多部分字符串添加额外斜杠,android,json,gson,retrofit,Android,Json,Gson,Retrofit,我认为这是一种改进,即在使用序列化JSON数据调用服务时向键值对添加额外的斜杠。 我有一个散列映射对象作为多部分字符串传递,我正在使用Gson将其转换为JSON字符串 public static String getJsonString(Object object) { gson = new Gson(); jsonString = gson.toJson(object); return jsonString; } 我有像这样的改装建设者 Retrofit.Builde
public static String getJsonString(Object object) {
gson = new Gson();
jsonString = gson.toJson(object);
return jsonString;
}
我有像这样的改装建设者
Retrofit.Builder()
.baseUrl(path)
.addConverterFactory(GsonConverterFactory.create())
.client(trustCert(context))
.build();
将JSON数据作为
Call<ResponseBody> responseBodyCall = ApiClient.getInstance(context).getApiService().uploadData(getJsonString(params));
callresponsebodycall=ApiClient.getInstance(context.getApiService().uploadData(getJsonString(params));
Api接口:
@Multipart
@POST("upload")
Call<ResponseBody> uploadData(@Part("data") String data);
@Multipart
@发布(“上传”)
调用uploadData(@Part(“data”)字符串数据);
当我们在服务器端调试时,收到的json数据中有额外的斜杠。例如,它应该类似于\“{\”key1\”,\“value\”}\,但它被序列化为\“{\”key1\”,\“value\\”}\”。我在api调用之前放置了一个断点,数据都很好,但在服务器端却很奇怪。应该是这样的:您将服务方法声明为string,并将生成的JSON文档传递给它——因此它会被编码,因为Gson/REFRANT根本不知道您正在传递JSON文档。你为什么要编码两次?我的意思是,为什么需要
getJsonString()
?让uploadData
接受对象以及.upload(params)
行吗?@lyubmyrshaydariv是的,这就是问题所在,我实际上在这两行addConverterFactory(GsonConverterFactory.create())
和getJsonString(params)
中编码了两次。我将hash-map对象传递给uploadData
,在服务器端一切正常。谢谢你,伙计。