Ios 如何根据密钥将JSON解析为不同的模型?
我需要根据来自服务器的一个特定密钥将JSON解析为不同的模型,例如,如果key=userCoupon,我需要将其映射到名为usercoupondo的模型中,如果key=discountCoupon,我需要将响应映射到另一个名为DiscountCouponDTO的DTO中。我使用Alamofire进行网络调用,使用ObjectMapper进行映射。在swift 4中,使用新的可解码协议很容易将响应映射到swift结构 看看这篇文章: 服务器响应与结构匹配的简单示例Ios 如何根据密钥将JSON解析为不同的模型?,ios,swift,alamofire,objectmapper,Ios,Swift,Alamofire,Objectmapper,我需要根据来自服务器的一个特定密钥将JSON解析为不同的模型,例如,如果key=userCoupon,我需要将其映射到名为usercoupondo的模型中,如果key=discountCoupon,我需要将响应映射到另一个名为DiscountCouponDTO的DTO中。我使用Alamofire进行网络调用,使用ObjectMapper进行映射。在swift 4中,使用新的可解码协议很容易将响应映射到swift结构 看看这篇文章: 服务器响应与结构匹配的简单示例 struct User: Dec
struct User: Decodable {
let name: String
let email: String?
}
在这种情况下,服务器可能会使用
{
"name": "John"
}
let decoder = JSONDecoder()
let user = try decoder.decode(dataFromServer, User.self)
在这种情况下,用户对象将定义名称,email=nil
如果需要从snake_案例映射到camelCase,可以使用编码键
struct User: Decodable {
let firstName: String
let lastName: String
let email: String
enum CodingKeys: String, CodingKey {
case email
case firstName = "first_name"
case lastName = "last_name"
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
email = try values.decode(String.self, forKey: .email)
firstName = try values.decode(String.self, forKey: .firstName)
lastName = try values.decode(String.self, forKey: .lastName)
}
}
希望这有帮助好的,那么您是否面临任何问题?你试过什么?你有没有遵循任何答案或教程?