2 votes

Kotlin Gson toJson renvoie une chaîne de caractères entre guillemets.

J'essaie d'encoder un objet JSON à partir d'un objet Kotlin :

class RequestData(val phone: String)

...

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

Après l'encodage, j'obtiens une chaîne entre guillemets

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

au lieu de

{"phoneNumber":""}

Pouvez-vous me dire pourquoi cela se produit et comment le réparer ?

1voto

pirogtm Points 26

J'ai trouvé une solution. J'ai fait une erreur à un autre endroit. J'ai essayé d'envoyer une requête POST JSON au serveur avec Retrofit et j'ai encodé l'objet en JSON-string avant de le mettre dans @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)

Mais la bonne façon de procéder est de mettre l'objet non encodé dans @Body.

interface AuthService {

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

}

...

data class RequestData(val phone: String)

...

authService.requestPinCode(RequestData("79008007060"))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X