Bonjour tout le monde, j'ai un objet JSON avec un problème de réponse irrégulière, parfois il n'envoie pas certaines des deux clés et valeurs mon modèle comme: J'ai essayé de donner une certaine valeur initiale pour modèle comme ci-dessous, mais il se bloque toujours: p> plein de mon objet JSON comme: p> et problème commence quand Je l'ai reçu comme: p>
4 Réponses :
Déclarez simplement les membres de la structure comme facultatif qui peut être nil code>
Non, alors les membres correspondants restent simplement nil code>.
Votre structure doit être comme: p>
Dans votre cas, vous devez utiliser un conteneur et tout en donnant des valeurs initiales pour votre modèle que vous les définissez comme constante, ils devraient être variables. Pour utiliser votre modèle avec conteneur:
struct GetComments: Codable {
let name, surname: String?
let photoPath: String?
let commentid, comment, date: String?
let commentOwner: String?
let id : String?
let email: String?
init (from decoder: Decoder) throws {
let container = try decoder.container(keyedBy: CodingKeys.self)
self.name = try container.decodeIfPresent(String.self, forKey: .name) ?? ""
self.surname = try container.decodeIfPresent(String.self, forKey: .surname) ?? ""
self.photoPath = try container.decodeIfPresent(String.self, forKey: .photoPath) ?? "maybe a place holder url or empty string"
self.commentid = try container.decodeIfPresent(String.self, forKey: .commentid) ?? ""
self.comment = try container.decodeIfPresent(String.self, forKey: .comment) ?? ""
self.date = try container.decodeIfPresent(String.self, forKey: .date) ?? ""
self.commentOwner = try container.decodeIfPresent(String.self, forKey: .commentOwner) ?? ""
self.email = try container.decodeIfPresent(String.self, forKey: .email) ?? ""
self.id = try container.decodeIfPresent(String.self, forKey: .id) ?? ""
}
}
Utilisez Init Init (à partir du décodeur: décodeur) code> Utilisez DecodifPresent code> pour Les valeurs facultatives