json - 可在 JSON 中解码字典 - Swift
问题描述
我正在尝试在数据中使用Decodable
,但出现以下错误:1) 类型“客户”不符合协议“可解码”和 2) 使用未声明的类型“地址”。任何帮助都会很棒。Dictionaries
JSON
struct Customer : Decodable {
var firstName : String
var lastName : String
var address : Address
}
struct CustomersResponse : Decodable {
var customers : [Customer]
}
let json = """
{
"customers":[
{
"firstName" : "Henry",
"lastName" : "Collins",
"address" : {
"street" : "1200 Highland Ave",
"city" : "Houston",
"state" : "TX",
"geo" : {
"latitude" : 29.76,
"longitude" : -95.36
}
}
}
]
}
""".data(using: .utf8)!
let customersResponse = try!
JSONDecoder().decode(CustomersResponse.self, from: json)
print(customersResponse)
解决方案
和address
被geo
Dictionaries
认为是嵌套对象。由于使用未声明的类型“地址”错误,您收到类型“客户”不符合协议“可解码”错误。因此,首先,您需要通过声明类型来消除第二个错误。但是,如果你不声明,你也会得到两个新的错误。将以下代码添加到项目的顶部以消除任何错误并产生正确的输出。Address
Geo
struct Geo : Decodable {
var latitude : Double
var longitude : Double
}
struct Address : Decodable {
var street : String
var city : String
var state : String
var geo : Geo
}
推荐阅读
- couchbase - 如果参数为空或 null,n1ql 查询 where 子句返回所有
- javascript - 如何使文本出现在滚动反应
- android - 如何生成位图?
- mips - 需要 MIPS 架构循环帮助
- c# - 统一捕获一系列相机渲染
- rust - repr(transparent) 不允许将包含数组的结构视为数组
- c# - 带有 BackgroundTask 的 UWP 应用程序将不再构建错误 80080204
- python - Google 距离矩阵 API 返回“ZERO_RESULTS”
- php - 如何创建 data.php 或 data.xml 文件以附加 jquery 以实现自动完成
- javascript - React 将 Props 传递给无状态功能组件