json - Alamofire 通过数组索引进行解码

标签 json swift alamofire decodable

我在解码 json 时遇到问题,我无法在结构上使用“self”函数,因为我通过 1 个键(名称为“my_profile”)和许多值从服务器获取 json,我通过索引返回这些值,我想将其解码为结构体,请帮助我

Alamofire.request(mainUrl, method:.post , parameters: paramstring , encoding: JSONEncoding.default, headers: nil).responseJSON {
    response in
    if let data = response.data
    {
        switch response.result
        {
        case.failure(let error):
            print(error)
        case.success(let value):
            let json=JSON(value)
            guard let dataarr = json["my_profile"].array else { return }
            // I wan't send it to the structure , and get it from another view controllers
            var name = dataarr[0]
            var last_name = dataarr[1]
            var email = dataarr[2]

        }
    }
}

这是我的结构

struct UserInfo : Decodable {

    var name : String 
    var last_name : String
    var emai : String

    }

Json结构:

enter image description here

最佳答案

最好为您的struct编写一个初始化程序:

struct UserInfo : Decodable {
    var name : String
    var last_name : String
    var email : String

    init(name: String, lastName: String, email: String) {
        self.name = name
        self.last_name = lastName
        self.email = email
    }
}

然后你可以使用这样的东西(根据你的具体需求进行调整):

let json = JSON(value)
guard let dataarr = json["my_profile"].arrayValue else { return }
let stringArray = dataarr.map { $0.stringValue }

var name = stringArray[0]
var last_name = stringArray[1]
var email = stringArray[2]

let userInfo = UserInfo(name: name, lastName: last_name, email: email)
// use `userInfo` object

要将对象传递给新的 View Controller ,您应该在 NewViewController 中定义一个变量来存储 userInfo 对象:

let userInfo: UserInfo!

然后在上面的代码中,您应该在最后调用这些行(它使用 Storyboard):

// ...
let userInfo = UserInfo(name: name, lastName: last_name, email: email)

let controller = storyboard?.instantiateViewController(withIdentifier: "NewViewController") as! NewViewController
controller.userInfo = userInfo
present(controller, animated: true, completion: nil)

其中,NewViewController 是显示 userInfo 对象内容时的新 Controller 。不要忘记在 Storyboard 中将新 View Controller 标识符设置为 NewViewController

关于json - Alamofire 通过数组索引进行解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50921460/

相关文章:

Python - Json 转换 - 为什么使用相似的字符串格式会表现不同

ios - 为什么未显示 Collection Reusable View?

swift - 使用 alamofire 排队

swift - 后台请求不执行 Alamofire Swift

ios - 场景套件。哪条路向上?

swift - 如何在Alamofire中获取上传base64图片的进度?

json - HIVE 以 json 格式插入覆盖目录

json - 将 .txt 文件转换为 JSON

jquery - 使用 JSON 在完整日历上呈现事件

swift - 保存到本地数据库图形?