Kotlin Gson toJson returns 双引号字符串

Kotlin Gson toJson returns double quoted string

我正在尝试从 Kotlin 对象编码 JSON 对象:

class RequestData(val phone: String)

...

val requestJson = Gson().toJson(RequestData("79008007060"))

编码后我得到引用字符串

"{\"phoneNumber\":\"\"}"

改为

{"phoneNumber":""}

你能告诉我为什么会发生这种情况以及如何解决它吗?

我找到了解决办法。我在其他地方弄错了。我尝试使用 Retrofit 向服务器发送 POST JSON 请求,并将对象编码为 JSON-string,然后再将其发送到 @Body:

interface AuthService {
    @POST("requestPinCode")
    fun requestPinCode(@Body body: String): Observable<ApiResult>
}

...

data class RequestData(val phone: String)

...

val requestJson = Gson().toJson(RequestData("79008007060"))
authService.requestPinCode(requestJson)

但正确的方法是将未编码的对象放入@Body

interface AuthService {

    @POST("requestPinCode")
    fun requestPinCode(@Body body: RequestData): Observable<ApiResult>

}

...

data class RequestData(val phone: String)

...

authService.requestPinCode(RequestData("79008007060"))