jsonserialization - recorrer json swift
Lea el archivo JSON con Swift 3 (1)
Tengo un archivo JSON llamado points.json y una función de lectura como:
private func readJson() {
let file = Bundle.main.path(forResource: "points", ofType: "json")
let data = try? Data(contentsOf: URL(fileURLWithPath: file!))
let jsonData = try? JSONSerialization.jsonObject(with: data!, options: []) as! [String:Any]
print(jsonData)
}
No funciona, ¿alguna ayuda?
Tu problema aquí es que obligas a desenvolver los valores y en caso de error no puedes saber de dónde viene.
En su lugar, debe manejar los errores y desenvolver sus opciones de manera segura.
Y como @vadian señala acertadamente en su comentario, debe usar Bundle.main.url
.
private func readJson() {
do {
if let file = Bundle.main.url(forResource: "points", withExtension: "json") {
let data = try Data(contentsOf: file)
let json = try JSONSerialization.jsonObject(with: data, options: [])
if let object = json as? [String: Any] {
// json is a dictionary
print(object)
} else if let object = json as? [Any] {
// json is an array
print(object)
} else {
print("JSON is invalid")
}
} else {
print("no file")
}
} catch {
print(error.localizedDescription)
}
}
¡Cuando se codifica en Swift, por lo general !
es un olor a código ¡Por supuesto que hay excepciones (IBOutlets y otros) pero trate de no usar la fuerza desenvolviendo !
usted mismo y siempre desenvuelva de forma segura en su lugar.