【发布时间】:2022-01-12 13:19:55
【问题描述】:
当名称字段末尾有逗号时,JSONDecoder().decode 会失败。为什么会这样?我该如何解决?
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)
解码此数据返回 nil
我的模特:
struct AreaModel: Codable {
enum CodingKeys: String, CodingKey {
case name
case km = "Km"
case strid = "Strid"
}
let name: String
let km: Double?
let strid: String
}
【问题讨论】:
-
请分享所有代码
-
我添加了所有代码。请看一下。想要在名称中不带逗号的情况下添加所有内容,并按预期进行解码
-
你注意到最后一个条目有一个重复的键“Km”吗?
-
可能是错字或逻辑错误检查一下
let strid: String? -
使用正确的 do/try/catch 并打印错误,这应该会很快发现问题。