You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Alomifere 5.2获取响应后如何解析指定结构JSON数组获取全部值

解析Alamofire 5.2返回的JSON数组的实现方法

1. 优先推荐:用Codable自动解析(Alamofire 5.x原生支持)

首先根据你的JSON结构定义对应的Codable模型,字段名和数据类型完全匹配JSON返回值即可:

// 坐标嵌套模型
struct Coordinate: Codable {
    let x: Double
    let y: Double
}

// 数组元素模型
struct ResponseItem: Codable {
    let id: Int
    let type_id: Int
    let coordinate: Coordinate
    let name: String
}

发起请求时直接调用responseDecodable方法自动解析:

import Alamofire

AF.request("你的请求接口地址").responseDecodable(of: [ResponseItem].self) { response in
    switch response.result {
    case .success(let itemList):
        // 解析完成后直接遍历即可获取所有字段值
        for item in itemList {
            print("id值:\(item.id)")
            print("type_id值:\(item.type_id)")
            print("name值:\(item.name)")
            print("x坐标值:\(item.coordinate.x)")
            print("y坐标值:\(item.coordinate.y)")
        }
    case .failure(let error):
        print("请求或解析失败:\(error.localizedDescription)")
    }
}

2. 备选方案:手动解析JSON

如果有特殊场景需要手动处理返回值,可以先拿到原始JSON结构再逐字段取值:

AF.request("你的请求接口地址").responseJSON { response in
    switch response.result {
    case .success(let value):
        // 先把返回值转成字典数组格式
        guard let jsonArray = value as? [[String: Any]] else {
            return
        }
        for itemDict in jsonArray {
            let id = itemDict["id"] as? Int ?? 0
            let typeId = itemDict["type_id"] as? Int ?? 0
            let name = itemDict["name"] as? String ?? ""
            let coordinateDict = itemDict["coordinate"] as? [String: Double] ?? [:]
            let x = coordinateDict["x"] ?? 0.0
            let y = coordinateDict["y"] ?? 0.0
            // 以上变量就是所有字段的取值,可直接使用
        }
    case .failure(let error):
        print("请求失败:\(error.localizedDescription)")
    }
}

注意事项

  • 如果需要把Swift属性名改成驼峰命名(比如把type_id改成typeId),可以在模型中自定义CodingKeys枚举做字段映射
  • 要保证模型中字段的数据类型和JSON返回的类型完全匹配,否则会触发解析失败

内容的提问来源于stack exchange,提问作者uyarc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:54:01