【发布时间】:2019-05-21 06:59:25
【问题描述】:
JSON:
{
"rows" :
[
{
"_id": "5cdc0ede5c3dcb04bdb3a972",
"emp_code": 187,
"log_id": 361711,
"punch_time": "2019-05-07T04:00:33.000Z",
"pin_type": 1,
"status": 4,
"__v": 0
},
{
"_id": "5cdc40de5c3dcb04bdb3a972",
"emp_code": 111,
"log_id": 361701,
"punch_time": "2019-05-07T04:00:35.000Z",
"pin_type": 101,
"status": 4,
"__v": 0
}
],
"pin_type_text": {
"1": "In Fingerprint",
"4": "In Card",
"101": "Out Fingerprint",
"104": "Out Card"
}
}
每一行中pin_type的值是指pin_type_text中与其key对应的记录。
我正在使用 AlamofireObjectMapper 来创建模型,这里是 PinTypeText 模型:
class PinTypeText : Mappable {
var inFingerprint: String?
var inCard: String?
var outFingerprint: String?
var outCard: String?
required init?(map: Map) {
}
func mapping(map: Map) {
self.inFingerprint <- map["1"]
self.inCard <- map["4"]
self.outFingerprint <- map["101"]
self.outCard <- map["104"]
}
}
问题:假设将来 pin_type 值 - 1, 4, 101, 104 在后端发生变化,我如何在不改变模型的情况下处理这种情况.根据这个模型结构,每次后端模型更改时我都需要更改我的模型类
【问题讨论】:
-
您可以使用
Codable容器来解析此类数据。 -
@PGDev :但是对于可编码的,我不需要在 JSON 中将变量命名为相同的名称,即 1,4,101,104 吗?这是不可能的命名约定。
-
由于您的 JSON 由于版本迁移而更新,您可能希望创建两个模型来处理不同的 API 响应 JSON,然后您的 ObjectMapper 能够毫无问题地映射到不同的版本。例如PinTypeText_V1、PinTypeText_V2 继承自同一父模型 PinTypeText,使用 ObjectMapper 进行不同映射
-
@PeterGuo :但这需要每次后端发生变化时更新代码,不是吗?
-
@Nitish 添加了
codable的答案。看看吧。
标签: ios json swift objectmapper