Kotlin将对象转换为另一个对象

时间:2017-05-16 07:06:10

标签: android json kotlin

http://cm08323.tmweb.ru/android/determinace/json/images.json 我有一些json到服务器。

我的数据库类:

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

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)

我的映射器 ImagesResponse 转换为图像

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

如何从列表&lt;变换器看起来像变压器ImageSingle&gt; 列表&lt;图像&gt;

我有单个物体的变形金刚,他看起来像那样:

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

            requestImages()
        }

你能帮我写一下“列表”类型的变压器吗?我尝试制作它,但它没有成功。谢谢。对不起我的英语不好。

或者从Map到List的转换应该在Mapper类中更好? (在方法调用中)

2 个答案:

答案 0 :(得分:1)

考虑到 images.json ,您的print np.linalg.cond(corr) . # 1.23116253259 print np.linalg.cond(multicollinear_corr) . # 6.19985218873e+15 不应该返回getImages()的{​​{1}}。

Single

然后你可以使用Kotlin List.map()映射器来映射列表。

List

答案 1 :(得分:1)

接口声明错误:

imagesAdi.getImages().map { it.images }
    .map { /* your mapper here */ }
    ...

应该是(根据你的json):

engine = creat_engine("oracle:// ....")
Base = declarative_base()

class MyTable(Base):
    __tablename__ = 'MyTable'
    ID = Column(Integer, Sequence('my_id_seq'),  primary_key=True)
    SomeColumn = Column(VARCHAR(50))

Base.metadata.create_all(engine)

对于映射部分,这样的事情会:

class MyTable(Base):
    __table__ = Table('myTable', Base.metadata, autoload=True,
        Column('id', Integer, Sequence('my_id_seq'), primary_key=True),
        Column('somecolumn', VARCHAR(50))
)