Swift如何通过struct解析含数字开头key的JSON并完成API调用
问题根因
你自定义了SATScores的CodingKeys映射规则,但仅声明了25th_percentile对应的属性映射,遗漏了同层级的midpoint属性的声明,导致Swift编译器无法自动完成Decodable协议的默认实现,因此抛出不遵循协议的报错。
另外你定义的SATSubjects和SATSubjects2结构完全一致,可以直接复用同一个结构体,无需重复定义冗余代码。
修复方案
只需要在CodingKeys中补全midpoint的声明即可,因为它的属性名和JSON返回的key完全一致,不需要额外做别名映射:
struct SATScores: Decodable { let midpoint: SATSubjects let the25th_percentile: SATSubjects enum CodingKeys: String, CodingKey { // 补全midpoint的声明 case midpoint case the25th_percentile = "25th_percentile" } }
修改后可以直接删除冗余的SATSubjects2结构体,所有逻辑即可正常运行。
内容的提问来源于stack exchange,提问作者punkhead
相关产品推荐
相关产品推荐

