【发布时间】:2021-11-22 12:53:34
【问题描述】:
嘿,我收到了来自 retrofit 的 json 响应。我想根据 sentAt 属性过滤。我想比较 最新时间 并相应地移动块。现在在我的 json 中有 4 个项目/块,但可能更多。有人可以知道如何以有效的方式过滤列表和修改。我还需要将 sentAt 值转换为 time 和 date 格式并存储在其他变量中。今天日期的格式将是 time,如果日期是旧的,我需要 date 格式。
Json 响应
{
"conversations": [
{
"id": "789",
"title": "Conversation Title 3",
"lastMessage": {
"id": "4677",
"text": "Text 3",
"sentAt": "2021-09-28T10:39:10.0492422+01:00"
}
},
{
"id": "456",
"title": "Conversation Title 2",
"lastMessage": {
"id": "3c7e",
"text": "Text2",
"sentAt": "2021-09-26T12:39:10.0493518+01:00"
}
},
{
"id": "101",
"title": "Conversation Title 4",
"lastMessage": {
"id": "f983",
"text": "Text 4",
"sentAt": "2021-09-30T13:39:10.0493537+01:00"
}
},
{
"id": "123",
"title": "Conversation Title 1",
"lastMessage": {
"id": "f983",
"text": "Text 1",
"sentAt": "2021-09-26T12:38:00.0493537+01:00"
}
}......
]
}
预期结果
{
"conversations": [
{
"id": "101",
"title": "Conversation Title 4",
"lastMessage": {
"id": "f983",
"text": "Text 4",
"sentAt": "2021-09-30T13:39:10.0493537+01:00"
}
},
{
"id": "789",
"title": "Conversation Title 3",
"lastMessage": {
"id": "4677",
"text": "Text 3",
"sentAt": "2021-09-28T10:39:10.0492422+01:00"
}
},
{
"id": "456",
"title": "Conversation Title 2",
"lastMessage": {
"id": "3c7e",
"text": "Text2",
"sentAt": "2021-09-26T12:39:10.0493518+01:00"
}
},
{
"id": "123",
"title": "Conversation Title 1",
"lastMessage": {
"id": "f983",
"text": "Text 1",
"sentAt": "2021-09-26T12:38:00.0493537+01:00"
}
}......
]
}
例如将值存储在变量中
id : 101
time : 13:39
id : 789
time : 28/09/2021
添加数据类
对话响应
data class ConversationsResponse(
val conversations: List<Conversations>? = null
)
对话
data class Conversations(
val id: String? = null,
val title: String? = null,
val lastMessage: LastMessage? = null
)
最后一条消息
data class LastMessage(
val id: String? = null,
val text: String? = null,
val sentAt: String? = null
)
【问题讨论】:
-
你是如何在 Java 中处理这个响应的?您使用 Gson、Jackson 或任何其他库还是手动解析它?我会使用
java.time.OffsetDateTime存储完整的日期、时间和偏移量,因为它实际上由LocalDate、LocalTime和ZoneOffset组成,所有这些都可以单独访问。 -
@deHaar 我正在使用 moshi 库来解析 json 响应。以及如何过滤 json 响应?
-
好的,你能告诉我们你正在使用的类吗?
-
@deHaar 你的意思是数据类?
-
是的,数据类 (Kotlin) 或 Pojo (Java)
标签: java android date kotlin calendar