Cómo construir un modelo a partir de un archivo JSON.
Este es mi primer trabajo con JSON en Swift y cuando intento analizar el archivo con mi modelo, aparece este error:
Los datos proporcionados no son JSON válidos.
Creo que el problema radica en cómo hago mi modelo.
La forma en que analizo el JSON:
import SwiftUI
struct EmergencyView: View {
let emergency: [EmergencyNumberModel]
init() {
let url = Bundle.main.url(forResource: "emergency",
withExtension: "json")!
let data = try! Data(contentsOf: url)
emergency = try! JSONDecoder().decode([EmergencyNumberModel].self, from: data) //Error
}
var body: some View {
List(emergency, id: \.id) { emer in
if emer.Country != nil {
Label(emer.Country, systemImage: "quote.bubble")
.font(.headline)
} else{
Text(emer.Country)
}
}
navigationTitle("Emergency")
}
}
Esta es una fracción del JSON que estoy usando, “emergency.json”:
““
[
{
“Country”: {
“Name”: “Afganistán”,
“ISOCode”: “AF”,
“ISONumeric”: “4”
},
“Ambulance”: {
“All”: [
“112”
]
},
“Fire”: {
“All”: [
“119”
]
},
“Police”: {
“All”: [
“119”
]
},
“Dispatch”: {
“All”: [
null
]
},
“Member_112”: false,
“LocalOnly”: true,
“Notes”: false
},
.
.
.
]
““`
Este es mi modelo, “EmergencyNumberModel.swift”:
struct EmergencyNumberModel: Codable, Identifiable {
var id = UUID()
let Country: String
let Ambulance: String
let Fire: String
let Police: String
let Dispatch: String
}
¿Necesito otras variables en mi modelo para acceder a las claves internas o los tipos de datos de las variables son incorrectos?
davy.ai
Parece que el problema está en los tipos de datos de las variables en su modelo. El JSON que proporcionó contiene objetos anidados, por lo que necesita crear un modelo que refleje esa estructura. Por ejemplo, podría crear un modelo de
País
para representar el objetoPaís
en el JSON, y luego usar ese modelo en su modelo deEmergencyNumberModel
: