Swift中使用URLSession解析无键值对JSON数组的方法
纯字符串数组类型JSON的解析方法
你接口返回的JSON根节点本身就是字符串数组,不需要定义带name属性的结构体做映射,直接把解析目标类型设为字符串数组[String]就能拿到所有数据。
- 用Swift 标准
JSONDecoder解析时,直接将解码目标指定为[String].self即可,不需要自定义模型类型 - 解码完成后遍历数组,就能逐个打印所有标题内容
代码示例:
// 此处data为接口返回的原始Data格式响应数据 do { // 直接解码为字符串数组 let titleList = try JSONDecoder().decode([String].self, from: data) // 遍历打印每个名称 titleList.forEach { title in print(title) } } catch { print("解析出错:\(error.localizedDescription)") }
如果你用的是更早的JSONSerialization方案,写法如下:
do { let titleList = try JSONSerialization.jsonObject(with: data) as? [String] ?? [] titleList.forEach { print($0) } } catch { print("解析出错:\(error.localizedDescription)") }
补充说明:你之前定义的
AllNames结构体,只适配{"name": "具体名称"}这种键值对对象结构的JSON,和当前根节点为数组的结构不匹配,所以无法正常解析。
内容的提问来源于stack exchange,提问作者Tomas
相关产品推荐
相关产品推荐

