Gson:反序列化和 "extend" 一个巨大的 JSON
Gson: Deserialize and "extend" a huge JSON
我有一个巨大的 Trello JSON,我需要将其转换为另一个具有不同结构的 JSON。为了做到这一点,我使用 Gson 在输出格式中进行反序列化和序列化,但输入 JSON 具有仅包含 ids 值的键,这些键实际上被定义为 [=25] 中其他 JSON 部分的元素=] 方式。该结构使得难以对 link 对象进行反序列化,而无需编纂特定且较长的反序列化器。有什么简单的方法可以做到这一点?
输入JSON:
{
"id": "5edf568cd37bf379d96640b3",
"name": "Trello board",
// A LOT ENTRIES...
"lists": [{
"id": "5edf568dabadcf538c546c3c",
"name": "TO DO"
},{
"id": "5edf568dfd9cb03d1c346cbf",
"name": "IN PROGRESS"
}],
"cards": [{
"desc": "Card 1"
"idList": "5edf568dfd9cb03d1c346cbf", // This should be deserialized with the specific "lists" element
// A LOT ENTRIES...
},{
"desc": "Card 2"
"idList": "5edf568dfd9cb03d1c346cbf",
// A LOT ENTRIES...
}],
// A LOT ENTRIES...
}
当前 POJO:
data class TrelloList(val id: String, val name: String)
data class Card(val desc: String, val idList: String)
想要卡片 POJO
data class Card(val desc: String, val list: TrelloList)
如何在不编写完整的自定义反序列化程序的情况下将这些 ID 扩展或转换为相关对象?
最后我不得不编写一个自定义解串器。遗憾的是 Gson 不计入结构 Jsons 适配器或在具有相同 ID 的元素之间进行连接的东西。
我有一个巨大的 Trello JSON,我需要将其转换为另一个具有不同结构的 JSON。为了做到这一点,我使用 Gson 在输出格式中进行反序列化和序列化,但输入 JSON 具有仅包含 ids 值的键,这些键实际上被定义为 [=25] 中其他 JSON 部分的元素=] 方式。该结构使得难以对 link 对象进行反序列化,而无需编纂特定且较长的反序列化器。有什么简单的方法可以做到这一点?
输入JSON:
{
"id": "5edf568cd37bf379d96640b3",
"name": "Trello board",
// A LOT ENTRIES...
"lists": [{
"id": "5edf568dabadcf538c546c3c",
"name": "TO DO"
},{
"id": "5edf568dfd9cb03d1c346cbf",
"name": "IN PROGRESS"
}],
"cards": [{
"desc": "Card 1"
"idList": "5edf568dfd9cb03d1c346cbf", // This should be deserialized with the specific "lists" element
// A LOT ENTRIES...
},{
"desc": "Card 2"
"idList": "5edf568dfd9cb03d1c346cbf",
// A LOT ENTRIES...
}],
// A LOT ENTRIES...
}
当前 POJO:
data class TrelloList(val id: String, val name: String)
data class Card(val desc: String, val idList: String)
想要卡片 POJO
data class Card(val desc: String, val list: TrelloList)
如何在不编写完整的自定义反序列化程序的情况下将这些 ID 扩展或转换为相关对象?
最后我不得不编写一个自定义解串器。遗憾的是 Gson 不计入结构 Jsons 适配器或在具有相同 ID 的元素之间进行连接的东西。