JSONDecoder().decode falla cuando hay comas.
JSONDecoder().decode falla cuando hay comas al final de un campo de nombre. ¿Por qué está sucediendo? ¿Cómo puedo resolverlo?
let string = "[{\"name\":\"Homeoffice Marc,\",\"Km\":846.7911330652549,\"Strid\":\"DE262B62633E34AAA8A622E189B42920B319C371\"},{\"name\":\"Küche,\",\"Km\":857.8694764184313,\"Strid\":\"BD1A60D736BE86377121A2CC713251DBE2603BD5\"},{\"name\":\"Besprechungszimmer,\",\"Km\":857.8721480885644,\"Strid\":\"751A10C5D3065F91CC9F5BDF5E7111DC452D1C39\"},{\"name\":\"Büro Vertrieb,\",\"Km\":857.8723091979339,\"Strid\":\"148F97F324BB59EAFF613A0EB3766E026CFAB320\"},{\"name\":\"Büro Produktmanagement und Support,\",\"Km\":857.8734889037903,\"Strid\":\"3A37C955F7D3C012577B1D19B6F662AD233372A5\"},{\"name\":\"Tischkicker,\",\"Km\":857.8748603133218,\"Strid\":\"B5B8A86BBA2102AF56721166D2E814736EF13132\"},{\"name\":\"Büro Entwicklung,\",\"Km\":857.8773683652697,\"Strid\":\"E6814BE03EEF386E63AD7609D970BD9BA8CE71AD\"},{\"name\":\"Syfit GmbH,\",\"Km\":857.877841443768,\"Strid\":\"64F80B1EC04D008E060F28D7F198A8C39DCD53B5\"},{\"name\":\"Büro Zolti,\",\"Km\":857.8798725612223,\"Strid\":\"23F4C2E1C467AEC9D55D873DC3ED7FC73CD92177\"},{\"name\":\"Globale Suche\",\"Km\":null,\"Km\":846.7911330652549}]"
let data = string.data(using: .utf8) ?? Data()
let areas = try? JSONDecoder().decode([AreaModel].self, from: data)
decodificar estos datos devuelve nulo.
Mi modelo:
struct AreaModel: Codable {
enum CodingKeys: String, CodingKey {
case name
case km = "Km"
case strid = "Strid"
}
let name: String
let km: Double?
let strid: String
}
davy.ai
El problema está ocurriendo porque las comas al final del campo de nombre hacen que los datos JSON sean inválidos. Según la especificación JSON, las comas solo deben usarse para separar elementos en un arreglo u objeto, no para campos finales.
Para resolver este problema, puedes modificar los datos JSON para eliminar las comas al final de los campos de nombre antes de decodificarlo. Alternativamente, puedes usar una expresión regular para reemplazar las comas inválidas por una sintaxis válida.
Por ejemplo, puedes modificar la cadena de la siguiente manera:
Esto eliminará cualquier coma al final antes de un corchete de cierre, para que los datos JSON sean válidos.
Luego, puedes decodificar los datos corregidos de la siguiente manera:
Esto debería decodificar exitosamente los datos JSON en tu estructura AreaModel.