Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 改装向序列化JSON多部分字符串添加额外斜杠_Android_Json_Gson_Retrofit - Fatal编程技术网

Android 改装向序列化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

我认为这是一种改进,即在使用序列化JSON数据调用服务时向键值对添加额外的斜杠。 我有一个散列映射对象作为多部分字符串传递,我正在使用Gson将其转换为JSON字符串

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
,在服务器端一切正常。谢谢你,伙计。