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é

 val builder = GsonBuilder() builder.setLenient() builder.registerTypeAdapter(Date::class.java,.........) return builder.create() 

….. no puedo descifrar cómo convertir el código

La línea de código sobre la que pregunta 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 admite la conversión SAM de lambdas a interfaces Java , pero la syntax es diferente a Java. Entonces, los retornos dentro de lambdas tienen un significado diferente al de Java, y deberían ser reemplazados por retornos implícitos o retornos labeldos .

Gracias, ya lo he averiguado … ¿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() 
  • ¿Cómo crear una instancia de interfaz anónima en Kotlin?
  • La llamada de escritura / transacción se elimina en TransactionalEventListener
  • En Kotlin, ¿cómo puedo groupBy tipo
  • Diferencia entre el método takeWhile () y filter () en Kotlin
  • Llamar a REST api en el emulador de Android hace que la aplicación se cuelgue
  • Reglas JUot de Kotlin
  • Android DecimalFormat no formatea correctamente
  • ¿Cómo puedo cambiar la versión del comstackdor de Kotlin en IntelliJ?
  • Apache Tomcat 8.0 no puede cargar la class de servlet escrita en Kotlin usando Eclipse para Java EE, Mars 2
  • No se puede recibir un post de grupo usando smack
  • Proguard: no ofusque las classs de datos de Kotlin