swift - 使用 Decodable 构造嵌套数据

标签 swift struct decodable

我正在使用 Alamofire 在 Swift 4 中使用 API。我正在使用结构来创建我希望在该响应中使用的数据模型,并确认可解码。

我的回复看起来是这样的......

    {  
       "pagination":{  
          "per_page":50,
          "items":3909,
          "page":1,
          "urls":{  
             "last":"https://api.discogs.com/database/search?q=ed+rush&per_page=50&secret=foo&page=79&key=bar",
             "next":"https://api.discogs.com/database/search?q=ed+rush&per_page=50&secret=foo&page=2&key=bar"
          },
          "pages":79
       },
       "results": []
    }

我的模型如下所示...

struct SearchResults: Decodable {
    let pagination: SearchPagination
    let results: [SearchResult]
}

struct SearchResult: Decodable {
    let type: String
}

struct SearchPagination: Decodable {
    let per_page: Int
    let items: Int
    let page: Int
    let pages: Int
}

我想了解的是如何将分页建模为 urls 本身就是一个嵌套对象。我是否只为 urls 创建一个结构,还是我在这里遗漏了一些明显的东西?

也许结构不是最好的方法?我来自 JS 背景,结构感觉非常像 TypeScript 中的接口(interface),但我知道我可能在这里遗漏了一些东西。

最佳答案

Decodable 的“规则”是任何字典 {} 都变成一个结构/类,每个键都变成一个属性。

struct SearchPagination: Decodable {
    let per_page: Int
    let items: Int
    let page: Int
    let pages: Int
    let urls: URLData
}

struct URLData: Decodable {
    let last, next : URL
}

关于swift - 使用 Decodable 构造嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50324218/

相关文章:

ios - 未调用 MKMapViewDelegate 子类方法

使用 Decodable 进行 JSON 解析

struct - Common Lisp The Language 2 过时了吗?

python - 使用 struct.unpack VS np.frombuffer VS np.ndarray VS np.fromfile 解压二进制文件

JSONDecoder 无法处理空响应

swift - 在 swift 4 中解码动态 JSON 结构

swift - 以编程方式将列添加到 NSTableView

ios - UITextField Swift 3 的读取值

swift - 自定义 UITabBarController.moreNavigationController UITableViewCells

在 C 中调用结构体