首页 > 解决方案 > Kotlin 上的 Android Retrofit 如何为响应添加时间戳?

问题描述

我有一个简单的 Json 类,可以完美地处理改造。但是里面没有时间戳。我添加了不在 json 中的自定义字段,但它始终为空

//Custom field for timestamp
val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())


//My class for JSON respons 
@Entity(tableName = "nal")
data class CurrencyItem(

@PrimaryKey(autoGenerate = true)
val id:Long,

@SerializedName("base_ccy")
var baseCcy: String,
@SerializedName("buy")
val buy: String,
@SerializedName("ccy")
val ccy: String,
@SerializedName("sale")
val sale: String,

val timeStamp: String = SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())
)

标签: androidjsonkotlinretrofitresponse

解决方案


最简单的解决方案在模型中添加自定义字段以获取时间戳。

val timeStamp: String

Аnd 当改造响应到来时,用时间戳重写这个空字段,我使用方法 SimpleDateFormat

// retrofit response
var res  = resp.body()

// new list which i create and rewrite with timestamp and then return
var l = ArrayList<CurrencyItem>()

//read response list with json converted data
for (r in res.orEmpty()){
   l.add(CurrencyItem(1 ,
                    r.baseCcy,
                    r.buy,
                    r.ccy,
                    r.sale,
                    SimpleDateFormat("yyyyMMdd_HHmmss").format(Date())))
 }

 //return this new list with timestamp. I use repository pattern with livedata
 response.value = l

推荐阅读