Swift API解码Struct错误排查:gorest接口解码问题
解码gorest API接口的Decodable结构体问题修复
你的Decodable结构体主要存在字段名不匹配、嵌套结构错误和不必要的数组包装这几个问题,对照gorest posts接口的返回结构,修正如下:
核心错误点
- Root结构体的字段名
first/second/third完全不符合API返回的key,应该对应code/meta/data Code结构体多余:API返回的code是单个整数,无需单独封装成结构体Meta结构体嵌套错误:API里的meta包含的是单个pagination对象,不是数组,且字段名应为pagination而非meta- 错误的数组类型:你给
code、meta都加了数组包装,但实际它们都是单个值/对象,只有data是Post数组
修正后的完整代码
struct Root: Decodable { let code: Int let meta: Meta let data: [Post] } struct Meta: Decodable { let pagination: Pagination } struct Pagination: Decodable { let total: Int let pages: Int let page: Int let limit: Int } struct Post: Decodable { let id: Int let user_id: Int let title: String let body: String }
如果需要让字段名更符合Swift命名规范(比如把user_id改成userId),可以添加CodingKeys枚举:
struct Post: Decodable { let id: Int let userId: Int let title: String let body: String enum CodingKeys: String, CodingKey { case id, title, body case userId = "user_id" } }
内容的提问来源于stack exchange,提问作者georgekak
相关产品推荐
相关产品推荐

