0
votes

Comment puis-je gérer l'objet JSON alors que certaines valeurs ne sont même pas nulles (manquantes ou n'existent pas) pour SWIFT

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: xxx

J'ai essayé de donner une certaine valeur initiale pour modèle comme ci-dessous, mais il se bloque toujours: xxx

plein de mon objet JSON comme: xxx

et problème commence quand Je l'ai reçu comme: xxx


0 commentaires

4 Réponses :


2
votes

Déclarez simplement les membres de la structure comme facultatif qui peut être nil xxx


1 commentaires

Non, alors les membres correspondants restent simplement nil .



0
votes

Utilisez un opérateur en option

Votre structure doit être comme: xxx


0 commentaires

-2
votes

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) ?? ""
    }

}


0 commentaires

0
votes

Utilisez valeurs optionnelles pour ceux que vous ne recevrez pas toujours et dans votre Init Init (à partir du décodeur: décodeur) Utilisez DecodifPresent pour Les valeurs facultatives xxx


0 commentaires