Retrofit + OKHTTP POST在body中发送Json字符串,服务器转义后解析失败

举个例子:
post在body中发送这个字符串 {"imei":"860475034"} , 服务器会解析成 {\"imei\":\"860475034\"}

报错如下:

{"status":500,"message":"JSON parse error: Cannot construct instance of `java.util.LinkedHashMap` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('{\"imei\":\"860475034\"}'); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `java.util.LinkedHashMap` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('{\"imei\":\"860475034\"}')\n at [Source: (PushbackInputStream); line: 1, column: 1]"}

各种尝试后如下解决,在Retrofit 初始化时加入 ScalarsConverterFactory 并且对 GsonConverterFactory初始化进行修改,具体代码如下:

Retrofit.Builder()
            .baseUrl(NetUrl.BASE_URL)
            .addConverterFactory(ScalarsConverterFactory.create()) // 加入这一行
            .addConverterFactory(
                GsonConverterFactory.create(
                    GsonBuilder().disableHtmlEscaping().create() // 加入这一行
                )
            )  
            .client(okHttpClient)
            .build()

gradle文件,版本自己修改:

implementation 'com.squareup.retrofit2:converter-scalars:2.3.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

搞定,么么哒~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容