serializedname example convert java json gson kotlin data-class

java - example - kotlin object to json string



Clase de datos Kotlin de Json usando GSON (2)

Tengo una clase Java POJO como esta:

class Topic { @SerializedName("id") long id; @SerializedName("name") String name; }

y tengo una clase de datos de Kotlin como esta

data class Topic(val id: Long, val name: String)

¿Cómo proporcionar la json key a cualquier variable de la kotlin data class como la anotación @SerializedName en variables java?


Basado en la respuesta de Anton Golovin

Detalles

  • Versión de Gson: 2.8.5
  • Android Studio 3.1.4
  • Versión de Kotlin: 1.2.60

Solución

Cree cualquier clase de datos y herede la interfaz JSONConvertable

interface JSONConvertable { fun toJSON(): String = Gson().toJson(this) } inline fun <reified T: JSONConvertable> String.toObject(): T = Gson().fromJson(this, T::class.java)

Uso

Clase de datos

data class User( @SerializedName("id") val id: Int, @SerializedName("email") val email: String, @SerializedName("authentication_token") val authenticationToken: String) : JSONConvertable

De JSON

val json = "..." val object = json.toObject<User>()

A JSON

val json = object.toJSON()


Clase de datos:

data class Topic( @SerializedName("id") val id: Long, @SerializedName("name") val name: String, @SerializedName("image") val image: String, @SerializedName("description") val description: String )

a JSON:

val gson = Gson() val json = gson.toJson(topic)

de JSON:

val json = getJson() val topic = gson.fromJson(json, Topic::class.java)