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"))
我正在尝试从 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"))