Ios 将字典转换为数组?
我试图从swiftui中的json响应中访问一些数据 但是,我得到了这个错误: 应解码数组,但找到了字典。“,underyingError:nil 我知道这意味着我的代码在寻找数组,但json响应是字典 我发现: 但是,当我尝试从Ios 将字典转换为数组?,ios,json,swift,Ios,Json,Swift,我试图从swiftui中的json响应中访问一些数据 但是,我得到了这个错误: 应解码数组,但找到了字典。“,underyingError:nil 我知道这意味着我的代码在寻找数组,但json响应是字典 我发现: 但是,当我尝试从[SightingsL].self中删除[]时,我的代码不起作用,出现以下错误: 无法将类型“SightingsL”的值分配给类型“[SightingsL]” 下面是:self.sightingsL=decodedList 这是我的代码: Published var s
[SightingsL].self中删除[]
时,我的代码不起作用,出现以下错误:
无法将类型“SightingsL”的值分配给类型“[SightingsL]”
下面是:self.sightingsL=decodedList
这是我的代码:
Published var sightingsL = [SightingsL]()
let url = URL(string: "https://xxxx")
var request = URLRequest(url: url!)
request.httpMethod = "GET"
request.addValue("my key", forHTTPHeaderField: "Authorization")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
URLSession.shared.dataTask(with: request) {(data,response,error) in
do {
if let d = data {
let decodedLists = try JSONDecoder().decode([SightingsL].self, from: d)
DispatchQueue.main.async { [self] in
self.sightingsL = decodedLists
}
}else {
print("No Data")
}
} catch {
print (error)
}
}.resume()
下面是JSON响应:
{
"Count": 123,
"myflies": [
{
"Id": 12345,
"Username": "SOME USERNAME",
"Images": [
6666,
8888
],
"userID": 123456
}
]
}
你需要
let res = try JSONDecoder().decode(Root.self, from: d)
DispatchQueue.main.async {
self.sightingsL = res.myflies
}
post json待接收移动方括号(SightingsL.self
)并声明Published var SightingsL:SightingsL?
@shu Khan,请查看我的编辑。@vadian,这将消除该错误,但会产生6个以上错误。是的,因为您的基本设计是错误的。根对象显然不是数组。
// MARK: - Root
struct Root: Codable {
let count: Int
let myflies: [SightingsL]
enum CodingKeys: String, CodingKey {
case count = "Count"
case myflies
}
}
// MARK: - SightingsL
struct SightingsL: Codable {
let id: Int
let username: String
let images: [Int]
let userID: Int
enum CodingKeys: String, CodingKey {
case id = "Id"
case username = "Username"
case images = "Images"
case userID
}
}