Swift中如何创建匹配指定JSON结构的Codable结构体
问题定位
你现有结构体的核心错误是friends字段的类型声明:你定义成了[String]字符串数组,但目标JSON里friends数组内存储的是结构化对象,不是字符串值,这是解析失败的根本原因。
可直接匹配JSON的结构体代码
struct Result: Codable { let data: [PeopleData] } struct PeopleData: Codable { let name: String let address: String let friends: [Friend] } struct Friend: Codable { let name: String let address: String }
匹配规则说明
- 根层的
{}对象对应Result结构体,其下data字段为对象数组,对应[PeopleData]类型 PeopleData下的friends字段同样是对象数组,每个数组元素包含name、address两个字符串属性,因此对应新增的[Friend]类型- 所有结构体字段名和JSON的key完全一致,无需自定义CodingKeys,直接调用
JSONDecoder即可完成解析。
注意:你贴出的JSON示例中,Andy对应的
address属性值末尾缺少闭合双引号,属于JSON语法错误。如果是粘贴时的笔误不影响使用,如果是接口真实返回的格式问题,会直接导致解码失败,需要和接口提供方确认修正,你无权修改返回格式的话无法绕过这个语法错误。
内容的提问来源于stack exchange,提问作者rmr84
相关产品推荐
相关产品推荐

