Lorsque l'analyse ne fonctionne pas "pour"Lorsque l'analyse ne fonctionne pas "pour"
En quoi peut-il y avoir une erreur?
Plus tôt ce code a travaillé avec un tel JSON, mais quand je l'ai changé JSON "pour" a cessé de travailler
do{
let json = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as! [String : Any]
if let main = json["LIBRARY"] as? [[String : Any]]{
for data in main {
var info = Modal()
info.name = data["NAME"] as? String
info.id = data["ID"] as? String
info.ImageViewURL = data["PICTURE"] as! String
print(info.id)
if let filesArray = data["FILES"] as? [[String : Any]] {
for file in filesArray {
var info = Modal()
info.name = file["NAME"] as? String
info.audioUrl = file["SRC"] as? String
print(info.name! as Any)
print(info.audioUrl! as Any, "\n")
self.modals.append(info)
}
}
print(info.name)
self.modals.append(info)
}
}
} catch let error {
print(error)
}
Voici mon JSON actuel
Dans la deuxième JSON, 'JSON [ » LIBRARY "]' n'est pas un tableau de dictionnaires. C'est un dict. Donc vous ne pouvez pas faire comme? [[String: Any]] '. Cela devrait être 'comme? [Chaîne: Tout] '. – Larme
@Larme Donc, il génère une erreur info.name = data ["NAME"] comme? String Type '(key: String, value: Any)' n'a aucun membre en indice – programmer
@programmer Je pointais le premier numéro. Vous avez mal interprété le format de votre JSON. Dans le code posté, votre problème ne passait même pas la boucle for, je suppose que si vous ajoutez un 'print()' après le 'if let' de' json ["LIBRARY"] 'il ne serait même pas imprimé . Donc, puisque la structure a changé, cela aurait signifié que le reste aussi. Vous ne pouvez pas analyser un dictionnaire exactement comme un tableau. Le reste était à vous. – Larme