我正在使用JSON到Kotlin插件生成DTO类,并使用Moshi来节省处理API复杂JSON响应的时间。
只是为了让你们了解响应有多大。
只是为了让你们了解响应有多大。
使用Moshi的示例DTO
@JsonClass(generateAdapter = true)
data class AssetDto(
@Json(name = "data")
val `data`: List<AssetData> = listOf(),
@Json(name = "status")
val status: Status = Status()
)
@Parcelize
@JsonClass(generateAdapter = true)
data class Status(
@Json(name = "elapsed")
val elapsed: Int = 0,
@Json(name = "timestamp")
val timestamp: String = ""
) : Parcelable
@Parcelize
@JsonClass(generateAdapter = true)
data class AssetData(
@Json(name = "id")
val id: String = "",
@Json(name = "metrics")
val metrics: Metrics = Metrics(),
@Json(name = "name")
val name: String = "",
@Json(name = "profile")
val profile: Profile = Profile(),
@Json(name = "symbol")
val symbol: String? = ""
) : Parcelable
问题
我想知道在不手动编码的情况下,创建复杂DTO类的领域模型的最佳方法是什么。
我应该为
AssetDto
或AssetData
创建领域模型吗?正如您所看到的,我有大量的值对象,我不知道是否应该为每个值对象创建一个领域模型,或者重用来自DTO的数据类是否可以。
目前,我使用JSON转换为Kotlin生成了另一堆普通数据类,这意味着我有数十个相同的数据类,看起来我仍然必须手动设置每个值,这现在成为了一个完全的阻碍。 我不确定是否应该继续实施映射器。
data class AssetDomain(
var status: Status? = Status(),
var `data`: List<Data>? = listOf()
)
data class Status(
var elapsed: Int? = 0,
var timestamp: String? = ""
)
data class Data(
var id: String? = "",
var metrics: Metrics? = Metrics(),
var name: String? = "",
var profile: Profile? = Profile(),
var symbol: String? = ""
)