将 Decodable 用于 JSON - Swift 时出现错误

Getting error when using Decodable for JSON - Swift

我正在尝试使用 Decodable 但我收到此错误并且无法弄清楚原因:无法将类型 'String' 的值转换为预期的参数类型 'Data'

这是我的代码:

struct JSONResponse : Decodable {
var places :[Place]
}

struct Place : Decodable {

    var name :String
    var latitude :Double
    var longitude :Double
}

let json = """

{
     "places":[
            {
                "name" : "San Diego",
                "latitude" : 32.71,
                "longitude" : -117.16
            },
            {
                "name" : "Los Angeles",
                "latitude" : 34.05,
                "longitude" : -118.24
            }
            ]
}

"""

let placesResponse = try! 
JSONDecoder().decode(JSONResponse.self, from: json)
print(placesResponse.places)

这是因为 .decode 函数接受 Data 而不是 String 的参数,因此 只需将 JSON 转换为 Data

JSONDecoder().decode(JSONResponse.self, from: json.data(using: .utf8)!)

为了将您的 String 转换为 Data 类型,您需要调用 .data 并通过设置 String 实例 属性 =15=] 参数如下:

""".data(using: .utf8)!  // added code

let placesResponse = try! JSONDecoder().decode(JSONResponse.self, from: json)
print(placesResponse.places)