Convierta GsonBuilder en Kotlin
¿Alguien sabe cómo convertir este código en kotlin
GsonBuilder builder = new GsonBuilder(); builder.setLenient(); builder.registerTypeAdapter(Date.class, new JsonDeserializer<Date>() { @Override public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { if (json.getAsJsonPrimitive().isNumber()) { return new Date(json.getAsJsonPrimitive().getAsLong() * 1000); } else { return null; } } }); return builder.create();
Entonces lo intenté
- "No hay suficiente información para inferir el parámetro T" con Kotlin y Android
- Clase Kotlin no encontrada cuando se construye con jenkins
- Observable.combineInferencia de tipo más reciente en kotlin
- No se puede encontrar setter para el campo - utilizando Kotlin con base de datos de la sala
- Persistencia de la habitación: Error: Entidades y Pojos deben tener un constructor público utilizable
val builder = GsonBuilder() builder.setLenient() builder.registerTypeAdapter(Date::class.java,.........) return builder.create()
….. no puedo averiguarlo cómo convertir el código
- Uso de la función "con"
- La llamada a API no funciona dentro de Anko Async
- Advertencia de tiempo de ejecución de Kotlin desactualizada (plugin Kotlin 1.1.2-release-Studio2.3-3)
- Observable.just () que devuelve Unidad en Kotlin
- Extensiones y fragmentos de Android de Kotlin
- Gradle 3.0.0-alpha1 no es compatible con kotlin-android plugin 1.1.2-3?
- Android Kotlin: java.lang.NoClassDefFoundError: Resolución fallida de: <KotlinObject>
- El proyecto no se construirá con Kotlin 1.1.3
La línea de código que está preguntando sobre puede convertirse al siguiente código de Kotlin:
builder.registerTypeAdapter(Date::class.java, JsonDeserializer<Date> { json, typeOfT, context -> if (json.getAsJsonPrimitive().isNumber()) Date(json.asJsonPrimitive.asLong * 1000) else null })
En primer lugar, Kotlin soporta la conversión SAM de lambdas a interfaces Java , pero la sintaxis es diferente a Java. Entonces, los retornos dentro de lambdas tienen un significado diferente al de Java, y deben ser reemplazados por retornos implícitos o devoluciones etiquetadas .
Gracias, ya lo averigué .. es la forma correcta de hacerlo, cualquier experto puede comentar
@Provides @Singleton fun provideGson(): Gson? { val builder = GsonBuilder() builder.setLenient() builder.registerTypeAdapter(Date::class.java, JsonDeserializer<Date> { json, typeOfT, context -> if (json.asJsonPrimitive.isNumber) { Date(json.asJsonPrimitive.asLong * 1000) } else { null } }) return builder.create() }
val gson = GsonBuilder().apply { setLenient() registerTypeAdapter(Date::class.java, JsonDeserializer<Date> { json, typeOfT, context -> if(json.asJsonPrimitive.isNumber) { Date(json.asJsonPrimitive.asLong * 1000) } else { null } }) }.create()
- El servicio se está matando mientras se mantiene el bloqueo de la estela y después de llamar a startForeground
- Uso de Javascript en la vista web