Transformación de Kotlin de objects a otros objects

http://cm08323.tmweb.ru/android/determinace/json/images.json Tengo algo de json en el server.

Mi class de database:

@Entity data class Image(val url: String = "", val urlAnswer: String = "", val race: String = "") : DisplayableItem, Persistable 

Interfaz para api:

 interface ImagesAdi { @GET("android/determinace/json/images.json") fun getImages(): Single<List<ImagesResponse>> } ... class ImagesResponse( val images: List<ImageSingle>) class ImageSingle(val url: String, val url_answer: String, val race: String) 

Mi asignador para la transformación de ImagesResponse a la image :

 @Singleton class ChooseRaceMapper @Inject constructor() : (ImageSingle) -> Image { override fun invoke(response: ImageSingle): Image = Image(response.url, response.url_answer, response.race) } 

¿Cómo debería parecerse un transformador de List <ImageSingle> a List <Image> ?

Tengo transformador para objects individuales, se ve así:

 fun chooseRace(): Single<Image> = imagesAdi.getSingleImage() .map { chooseRaceMapper.invoke(it) } .doOnSuccess { database.addDetectedResult(it) .subscribeIgnoreResult() requestImages() } 

¿Me pueden ayudar a escribir un transformador para el tipo " Lista "? Yo tratando de hacerlo, pero no funcionó. Gracias. Lo siento por mi ingles.

¿O la transformación de List to List debería ser mejor en la class Mapper? (En el método invocar)

Teniendo en count su images.json , sus getImages() no deberían devolver un Single de una List .

 @GET("android/determinace/json/images.json") fun getImages(): Single<ImagesResponse> 

Entonces podría usar el List.map() Kotlin List.map() para mapear la list.

 imagesAdi.getImages() .map { list -> list.map { chooseRaceMapper.invoke(it) } } .doOnSuccess { } 

La statement de la interfaz es incorrecta:

 interface ImagesAdi { @GET("android/determinace/json/images.json") fun getImages(): Single<List<ImagesResponse>> } 

Debería ser (de acuerdo con su JSON):

 interface ImagesAdi { @GET("android/determinace/json/images.json") fun getImages(): Single<ImagesResponse> } 

Y para la parte del mapeo, algo como esto hará:

 imagesAdi.getImages().map { it.images } .map { /* your mapper here */ } ... 
  • onActivityResult no se llama cuando se llama a la actividad de java desde kotlin para get resultados
  • Migración de Java a Kotlin
  • CellCache se representa inesperadamente en TableView con tornadoFX
  • El resultado es el mismo, pero el caso de testing no pasa en la testing unitaria
  • diferencia entre diversión en el bloque de object compañero y fuera de class en kotlin?
  • Kotlin: No se pueden aplicar dos condicionales a la vez. Verificar con el estilo de function de "cuerpo de retorno".
  • Vista de text de flujo alnetworkingedor de la image
  • Kotlin obtiene la anotación de campo siempre vacía
  • ¿Por qué el signo más debe estar al final de la línea en lugar de al principio en la línea siguiente?
  • ¿Tiene Kotlin una syntax para los literales de Map?
  • Kotlin Kapt: java.lang.IllegalStateException: endPosTable ya está configurado