无法解析数组 JSON 解码器 Swift 4
Can't Parse Array JSON Decoder Swift 4
我无法获取 link 的 JSON 数据,它总是出现错误。 "Expected to decode Array<Any> but found a dictionary instead."
谢谢。
我的JSON
{
server_response: [
{
id: "1",
magazine_title: "Volume 1 Issue 1",
mobile_link: "",
magazine_img: "https://www.pcbuyersguide.com.ph/wp-content/uploads/magazine_cover/pcbg.png",
mobile_zip: ""
},
{
id: "2",
magazine_title: "Volume 1 Issue 2",
mobile_link: "",
magazine_img: "https://www.pcbuyersguide.com.ph/wp-content/uploads/magazine_cover/pcbg.png",
mobile_zip: ""
},
{
id: "3",
magazine_title: "Volume 1 Issue 4",
mobile_link: "",
magazine_img: "https://www.pcbuyersguide.com.ph/wp-content/uploads/magazine_cover/pcbg.png",
mobile_zip: ""
},
{
id: "4",
magazine_title: "Volume 2 Issue 1",
mobile_link: "",
magazine_img: "https://www.pcbuyersguide.com.ph/wp-content/uploads/magazine_cover/pcbg.png",
mobile_zip: ""
}]
我的结构
struct Root: Decodable{
var server_response: [server_details]
}
struct server_details: Decodable{
var magazine_title : String
var magazine_img : String
var mobile_link: String
}
我的从数据服务器获取功能
// FETCH MAGAZINE
func fetchDatafromServer(){
guard let url = URL(string: "https://www.pcbuyersguide.com.ph/wp-content/mobileapp/pcbg_magazine_data.php") else {return}
URLSession.shared.dataTask(with: url) { (data, res, err) in
guard let data = data else {return}
do{
let articles = try JSONDecoder().decode([Root].self, from: data)
for info in articles {
self.magazine_title.append(info.server_response[1].magazine_title)
}
DispatchQueue.main.async {
self.collectionView?.reloadData()
}
}
catch let jsonErr{
print(jsonErr)
}
}.resume()
}
你说的是 decode([Root].self...
,就好像你的 JSON 是一个 Root 数组。但它不是一个Root数组。它是根。说 decode(Root.self
。
然后改变
for info in articles
到
for info in articles.server_response
那就是数组。
我无法获取 link 的 JSON 数据,它总是出现错误。 "Expected to decode Array<Any> but found a dictionary instead."
谢谢。
我的JSON
{
server_response: [
{
id: "1",
magazine_title: "Volume 1 Issue 1",
mobile_link: "",
magazine_img: "https://www.pcbuyersguide.com.ph/wp-content/uploads/magazine_cover/pcbg.png",
mobile_zip: ""
},
{
id: "2",
magazine_title: "Volume 1 Issue 2",
mobile_link: "",
magazine_img: "https://www.pcbuyersguide.com.ph/wp-content/uploads/magazine_cover/pcbg.png",
mobile_zip: ""
},
{
id: "3",
magazine_title: "Volume 1 Issue 4",
mobile_link: "",
magazine_img: "https://www.pcbuyersguide.com.ph/wp-content/uploads/magazine_cover/pcbg.png",
mobile_zip: ""
},
{
id: "4",
magazine_title: "Volume 2 Issue 1",
mobile_link: "",
magazine_img: "https://www.pcbuyersguide.com.ph/wp-content/uploads/magazine_cover/pcbg.png",
mobile_zip: ""
}]
我的结构
struct Root: Decodable{
var server_response: [server_details]
}
struct server_details: Decodable{
var magazine_title : String
var magazine_img : String
var mobile_link: String
}
我的从数据服务器获取功能
// FETCH MAGAZINE
func fetchDatafromServer(){
guard let url = URL(string: "https://www.pcbuyersguide.com.ph/wp-content/mobileapp/pcbg_magazine_data.php") else {return}
URLSession.shared.dataTask(with: url) { (data, res, err) in
guard let data = data else {return}
do{
let articles = try JSONDecoder().decode([Root].self, from: data)
for info in articles {
self.magazine_title.append(info.server_response[1].magazine_title)
}
DispatchQueue.main.async {
self.collectionView?.reloadData()
}
}
catch let jsonErr{
print(jsonErr)
}
}.resume()
}
你说的是 decode([Root].self...
,就好像你的 JSON 是一个 Root 数组。但它不是一个Root数组。它是根。说 decode(Root.self
。
然后改变
for info in articles
到
for info in articles.server_response
那就是数组。