可解码JSON中的字典-Swift



我试图在 JSON数据中使用 Decodable作为 Dictionaries,但是我得到这些错误:1)键入'customer'不符合协议'可解码'和2)使用未宣布的类型'地址'。任何帮助都会很棒。

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)

addressgeo Dictionaries被视为嵌套对象。您正在获取类型'客户''不符合协议'可解码'错误,因为使用未声明的类型'address'错误。因此,首先,您需要通过声明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
}

最新更新