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)