这里我在JSON中有value
,其中对于一些多个键值对,它返回字符串,而对于某些键,它返回的数组位于第一个字典中的自定义属性数组中value
键值对存在的数据是不同的,并且在第二个字典value
中,键值对在这里是不同的,那么如何为不同键值的内部数组实现模型类?
struct MediaGallery {
let id : Int
let mediaType : String
let label : Any
let position : Int
let disabled : Any
let file : String
init(dict : [String:Any]) {
self.id = (dict["id"] as? Int)!
self.mediaType = (dict["media_type"] as? String)!
self.label = dict["label"]!
self.position = (dict["position"] as? Int)!
self.disabled = dict["disabled"]!
self.file = (dict["file"] as? String)!
}
}
struct AttributeList {
let label : String
let value : String
let code : String
init(dict : [String:Any]){
self.label = (dict["label"])! as! String
self.value = (dict["value"])! as! String
self.code = (dict["code"])! as! String
}
}
struct DetailsListAttribute {
let attributeCode : String
let value : Any
init?(dict : [String:Any]) {
self.attributeCode = dict["attribute_code"] as! String
print(self.attributeCode)
if let values = dict["value"] as? String {
self.value = values
}
else {
if let arr = dict["value"] as? [[String:Any]]{
var filterArr = [AttributeList]()
for obj in arr {
filterArr.append(AttributeList(dict: obj))
}
self.value = filterArr
} else {
self.value = [AttributeList]()
}
}
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
我建议您使用这个优秀的GIT图书馆ObjectMapper节省一些时间。它将帮助您建模对象并将模型对象(类和结构)转换为JSON,反之亦然。
答案 2 :(得分:0)
好的,我没有完整的JSON,而且我似乎也不清楚。
但是,您可以使用Codable协议轻松地在Swift中解析和创建模型类。
您可以阅读更多相关内容和/或一些示例,教程:Ultimate Guide。
简而言之,什么是Codable协议?
您不再需要第三方库,以便将json数据解析并设置为模型类。 你应该像JSON一样创建你的类。根据键名称,它将为您创建类,属性和一切。
以下是您的JSON示例,我不知道我是否理解您的JSON格式,但您有诀窍:
struct Response: Codable {
let ca: [CustomAttribute]?
enum CodingKeys: String, CodingKey {
case ca = "custom_attributes"
}
}
struct CustomAttribute: Codable {
let code: String?
let value: [Value]?
struct Value: Codable {
let label: String?
let value: String?
let code: String?
let avg: String? // I don't know how your value array is composed
let count: Int? // I don't know how your value array is composed
}
enum CodingKeys: String, CodingKey {
case code = "attribute_code"
case avg = "avg_rating_percent"
}
}
对我来说,它看起来就像那样。
我没有看到整个JSON,但想象你有整个JSON作为Response Struct,它包含几个对象,例如CustomAttribute Array。 然后,您可以定义CustomAttribute结构,并添加与JSON一样多的属性。
无论如何,你可以这样称呼它:
当您收到API通话的回复时,您可以:
if let data = response.data {
let decoder = JSONDecoder()
let response = try! decoder.decode(Response.self, from: data)
print("Only printing the Custom Attribute : \(response.ca!)")
}
我将整个json数据解码为Object Response(就像我的Struct)。 我转到我的回复回复,或
答案 3 :(得分:0)
这可能会迟到但我认为这会有所帮助
模型类因SwiftyJSON,简单swift类,Gloss或swift codable(Swift 4)等框架而异。您可以使用自定义jsoncafe.com
轻松在线生成模型类