Besoin d'aide avec JSON

Bonsoir à tous!

Je me suis mis au JSON depuis peu et j’ai un peu de mal pour décrypter une partie d’un API : https://rickandmortyapi.com/api

Je n’arrive pas a trouver la structure adéquate pour récupérer plusieurs personnages, plusieurs locations ou plusieurs épisodes. Tous le reste est OK mais impossible de comprendre ce qu’il faut faire pour récupérer ceux-la.

J’ai fait tout internet mais la réponse dois tellement être facile que google ne me la montre pas :frowning:

Merci pour votre aide !

Nicolas.

Edit :

Voici mes structures fonctionnelles :

  • Pour un personnage :
import Foundation
 
struct JSonSelectedCharacter: Codable {
    
    let id: Int
    let name: String
    let status: String
    let species: String
    let type: String
    let gender: String
    let origin: Origin
    let location: Location
    let image: String
    let episode: [String]
    let url: String
    let created: String
     
    struct Origin: Codable {
        let name: String
        let url: String
    }
    struct Location: Codable {
        let name: String
        let url: String
    }

}

  • Ou pour une location :

import Foundation

struct JSonSelectedEpisode: Codable {

let id: Int

let name: String

let air_date: String

let episode: String

let characters: [String]

let url: String

let created: String

}

Salut,

je ne suis pas certain de comprendre l’erreur que tu rencontres.
Tu pourrais nous montrer le code où tu fais l’appel du webservice et le parsing ?
Et s’il y a une erreur qui s’affiche nous la donner ?
Comme ça on pourra t’aider à savoir à quel moment ça bloque

Salut,

Merci pour ta réponse, mais j’ai trouver mon erreur :sweat_smile:

func getRangedOfCharacterWithString(withString stringURL: String){
        RangedCharactersTransformedFromJson = []
        
        if let url = URL(string: stringURL) {
            URLSession.shared.dataTask(with: url) { data, response, error in
            if let data = data {
                
                do {
                    let res = try JSONDecoder().decode([JSonRangedCharacters].self, from: data)
                    
                    self.RangedCharactersTransformedFromJson.append(contentsOf: res)
                                                                
                    print(self.RangedCharactersTransformedFromJson)
                } catch let error {
                    print(error)
                }
                DispatchQueue.main.async {
                    self.ui_tableview_residents.reloadData()
                }
                self.updateUIAfterJsonRequestLocation()
            }
        }.resume()
    }
    
}

J’utilisais :

let res = try JSONDecoder().decode(JSonRangedCharacters.self, from: data)

au lieu de :

let res = try JSONDecoder().decode([SonRangedCharacters].self, from: data)

J’en ai conclu que si le JSON est un objet, il faut le décoder avec un array.

Encore désolé pour le poste inutile, j’ai du en effrayé beaucoup avec une question si stupide!
Mais si vous voyez de grosses erreurs dans ce code, n’hésitez pas !

Nicolas.

1 « J'aime »

Content que tu aies trouvé la solution :+1: Tu n’as effrayé personne ne t’inquiète pas, ton problème était complètement valide c’est surtout qu’il nous manquait des infos pour savoir quel problème tu rencontrais.

C’était surtout un soucis de formulation : pense à expliquer exactement le problème que tu rencontres plutôt (Erreur de compilation, crash lorsque j’arrive sur telle ligne, etc.) et surtout à mettre le code où l’erreur se produit :wink:

Happy coding!