SWIFT4将JSON解码结果发送到类进行处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SWIFT4将JSON解码结果发送到类进行处理相关的知识,希望对你有一定的参考价值。

我正在学习一个教程,该教程涉及获取JSON数据并将其解码为数组并使其工作并创建一个数组'user',请参阅代码:

fileprivate func fetchHomeFeed(){

    let jsonUrlString = "https://api.letsbuildthatapp.com/twitter/home"

    guard let url = URL(string: jsonUrlString) else { return }

let stringdata = URLSession.shared.dataTask(with: url) { (data, response, jsonErr) in

        guard let data = data else { return }
        do {

            let user = try JSONDecoder().decode(Users.self, from: data )
            let index: Int = user.users.count

            //print the names to check
            for index in 0...(index - 1) {
                print(user.users[index].name)
            }
        } catch let jsonErr {
           print("Error serialising ", jsonErr)
        }
        }.resume()
}

应用程序的设置方式是在另一个名为HomeDataSource的文件中有一个类,它需要此数组来显示用户。现在我有一个静态数组,它可以在应用程序中工作并显示数据。现在这需要填充来自fetchHomeFeed()函数的解码数据

我已经尝试了很多方法,但我无法让它工作,我喜欢坚持使用HomeDataSource设置一些它是有组织的代码。

class HomeDatasource: Datasource {
let users: [User] = {

let User1 = User(name: "Frank", username: "@Loremipsum", bioText: "Lorem ipsum dolor sit amet", profileImage: UIImage(named:("profile_image.jpg")))
let User2 = User(name: "Ben", username: "@Loremipsum", bioText: "Lorem ipsum dolor sit amet", profileImage: UIImage(named:("profile_image.jpg")))

    return [User1, User2]
}()

我想要一些提示或代码来帮助我解决这个问题..

答案

您的回复是用户和推文的字典,并且您使用错误的密钥声明您的User类(如果您愿意,可以删除推文密钥)

let root = try JSONDecoder().decode(Root.self, from: data )
self.users = root.users

struct Root: Codable {
    let users: [User]
    let tweets: [Tweet]
}

struct Tweet: Codable {
    let user: User
    let image: Image
    let message: String
}

struct Image: Codable {
    let width, height: Int
    let imageURL: String 
}

struct User: Codable {
    let id: Int
    let name, username, bio: String
    let profileImageURL: String 
}

以上是关于SWIFT4将JSON解码结果发送到类进行处理的主要内容,如果未能解决你的问题,请参考以下文章

Swift4:从文件中解码 json 时出错

Swift 4 解码简单的根级 json 值

Angular:如何将来自 HttpClient 请求的 JSON 结果映射到类实例?

Swift 4 Decodable - 将 JSON 对象解码为“数据”

Swift 4 - Json 解码器

Swift 4 JSON Parsing(预期解码 Array<Any> 但找到了字典)