gpt4 book ai didi

ios - 将 JSON 转换为 swift 对象的最佳方法是什么,同时检查键和值

转载 作者:搜寻专家 更新时间:2023-11-01 06:30:03 24 4
gpt4 key购买 nike

好吧,我认为这不是主要问题,但我错了。目前我正在做一个项目,我得到了大量的 JSON 返回。我正在获取这些并制作我的模型。现在在我的模型中,我正在通过 guard 语句检查是否有任何值是 nil。这是我的模型示例:

import Foundation
import SwiftyJSON

class profileModel {

var _phone_no: String?
var _full_name: String?
var _image: String?
var _email: String?
var _profile_pic: String?
var _rating: Int?
var _dob: String?
var _gender: String?
var _firstName: String?
var _lastName: String?


required init?(phone_no: String, full_name: String, image: String, email: String, profile_pic: String, rating: Int, dob: String, gender: String, firstName: String, lastName: String) {
self._phone_no = phone_no
self._full_name = full_name
self._image = image
self._email = email
self._profile_pic = profile_pic
self._rating = rating
self._dob = dob
self._gender = gender
self._firstName = firstName
self._lastName = lastName
}

convenience init?(json: JSON){

guard let phone_no = json["phone_no"].string,
let full_name = json["full_name"].string,
let image = json["profile_pic"].string,
let email = json["email"].string,
let profile_pic = json["profile_pic"].string,
let rating = json["rating"].int,
let dob = json["dob"].string,
let gender = json["gender"].string,
let firstName = json["first_name"].string,
let lastName = json["last_name"].string else {
print("Profile Detail Model Error")
return nil
}

self.init(phone_no: phone_no, full_name: full_name, image: image, email: email, profile_pic: profile_pic, rating: rating, dob: dob, gender: gender, firstName: firstName, lastName: lastName)

}

}

但是,当 JSON 返回的任何 key 丢失时,如何防止崩溃?好像当我同时检查 keyvalues 时,类变得非常非常大,必须有一些更好的方法。

最佳答案

使属性可选是一个好方法,但是您可以利用新的 Codable从 Swift 4 开始,您可以在其中将 JSON 解析为任何符合 Codable 的数据模型。

在您的情况下,您可以这样编写模型:

class ProfileModel: Codable {
var phone_no: String?
var full_name: String?
var profile_pic: String?
var email: String?
// var profile_pic: String?
var rating: String?
var dob: String?
var gender: String?
var first_name: String?
var last_name: String?
}

当你需要从服务器解码时使用:

let profile = try JSONDecoder().decode(ProfileModel.self, from: json1)

如果您得到一个“Profile”数组,只需将上面的行更改为:

let profiles = try JSONDecoder().decode([ProfileModel].self, from: json1)

不再需要使用 SwiftyJSON 库。

关于ios - 将 JSON 转换为 swift 对象的最佳方法是什么,同时检查键和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48625288/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com