如何通过按键手动解码[相册]和[图像]? 我尝试过,但是我做不到。 不知道是什么错误? 谢谢 ! 我的杰森 http://appscorporation.ga/api-user/test
struct ProfileElement: Codable {
let user: User
let postImage: String
let postLikes: Int
let postTags: String
enum CodingKeys: String, CodingKey {
case user
case postImage = "post_image"
case postLikes = "post_likes"
case postTags = "post_tags"
}
}
struct User: Codable {
let name, surname: String
let profilePic: String
let albums: [Album]
enum CodingKeys: String, CodingKey {
case name, surname
case profilePic = "profile_pic"
case albums
}
}
第二个人
struct Album {
let id: Int
let title: String
var images: [Image]
enum AlbumKeys: String, CodingKey {
case id = "id"
case title = "title"
case images = "images"
}
}
struct Image: Codable {
let id: Int
let url: String
enum CCodingKeys: String, CodingKey {
case id = "id"
case url = "url"
}
}
答案 0 :(得分:0)
您收到错误
类型“用户”不符合协议“可解码”
因为所有结构都必须采用(De)codable
,
如果您进行小改动,结构就会起作用
struct ProfileElement: Decodable {
let user: User
let postImage: String
let postLikes: Int
let postTags: String
}
struct User: Decodable {
let name, surname: String
let profilePic: String
let albums: [Album]
}
struct Album : Decodable {
let id: Int
let title: String
var images: [Image]
}
struct Image: Decodable {
let id: Int
let url: String
}
然后解码
let decoder = JSONDecoder()
decoder.keyDecodingStrategy = .convertFromSnakeCase // This line gets rid of all CodingKeys
let result = try decoder.decode([ProfileElement].self, from: data)
您可以使用
获取每张图片for item in result {
for album in item.user.albums {
for image in album.images {
print(image)
}
}
}