我是IOS Development的新手,我遇到了一个非常有趣的情况,我有这个json响应即服务器端
{
"caps": {
"first_key": "34w34",
"first_char": "34w45",
"first_oddo": "34w34"
.... : .....
.... : .....
}
}
我的问题是“caps”对象内的键可以是动态的(就像添加了一个更多的值一样)。我正在使用ObjectMapper映射器来映射从响应到模型类的值。我有这个模型类
class User: Mappable {
var first_key: String?
var first_char: String?
var first_oddo: String?
required init?(map: Map) {
}
// Mappable
func mapping(map: Map) {
first_key <- map["first_key"]
first_char <- map["first_char"]
first_oddo <- map["first_oddo"]
}
}
现在我不知道如果json响应中的值被更改(因为它是动态的),如何填充我的模型。我希望我已经解释得很好。我想我不想在模型中使用硬编码值吗?
答案 0 :(得分:0)
此解决方案使用Swift 4引入的Codable
协议。
如果您的JSON键是动态,则需要Dictionary
。
鉴于此JSON
let data = """
{
"caps": {
"first_key": "34w34",
"first_char": "34w45",
"first_oddo": "34w34"
}
}
""".data(using: .utf8)!
您可以定义像这样的结构
struct Response:Codable {
let caps: [String:String]
}
现在你可以解码你的JSON
了if let response = try? JSONDecoder().decode(Response.self, from: data) {
print(response.caps)
}
["first_key": "34w34", "first_oddo": "34w34", "first_char": "34w45"]