【发布时间】:2021-10-17 21:57:41
【问题描述】:
我无法解析 json 数据,因为名称包含数字 3,而不是字符串 通过 quicktype.io 尝试过,但它写的是 3 而不是 3,但每次我得到 nil 尝试创建变量 3,但无法从数字创建
这里是 Json
"items": {
"3": {
"name": "Тариф Gold 3 месяцев",
"product_id": 123,
"taxes": {
"total": {
"1": "0.08"
},
"subtotal": {
"1": "0.08"
}
},
"meta_data": []
}
}
这是我的代码
// MARK: - ServerStatusElement
struct ServerStatusElement: Decodable {
// var data: DataClass?
var items: Items?
}
// MARK: - DataClass
struct DataClass: Decodable {
var id: Int?
var status: String?
}
struct Items: Codable {
var items: itemsS
}
struct itemsS: Codable {
var the3: Int
}
typealias typeNetwork = [ServerStatusElement]
func fetchSubscribe(url: String) {
let url = URL(string: url)!
URLSession.shared.dataTask(with: url) { (data, response, error) in
guard let data = data else { return }
guard error == nil else { return }
do {
let value = try JSONDecoder().decode(typeNetwork.self, from: data)
print(value[0].items)
} catch let error {
print("Ошибка: \(error)")
}
}.resume()
}
【问题讨论】:
-
将
Items定义为字典,let items: [String: SomeType]您需要将 SomeType 替换为“3”下的值所使用的实际类型 -
我不太明白如何将其写入结构
-
struct ServerStatusElement: Decodable { let items: [String: SomeType] } -
希望你没有使用 SomeType...
-
只是一个注释:这个非常短的代码因为命名而阅读起来很痛苦:Items 和 itemsS 太相似了。此外,结构名称应以大写开头。
标签: ios json swift xcode mobile