舉個例子:
post在body中發(fā)送這個字符串 {"imei":"860475034"} 掸茅, 服務(wù)器會解析成 {\"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初始化進(jìn)行修改柠逞,具體代碼如下:
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'
搞定,么么噠~~