将 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)
我正在尝试使用 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)