Ios如何使用Alamofire发布多个自定义对象

标签 ios json swift alamofire

嗨,我是 iOS 新手,我正在使用 Alamofire 进行网络调用。一切进展顺利,我在进行网络调用时没有遇到任何麻烦。但由于我必须发布我的自定义对象,所以我没有运气。所以这是我之前做过的事情

let parameters: Parameters = [
        "Phone": phone,
        "ApiKey":"x-y-z"
    ]

这工作正常。

但现在我必须发布我的对象,例如

let parameters: Parameters = [
        "ApiKey": Common.API_KEY,
        "cardModel": cardModel,
        "clientModel" : clientModel
    ]

我的cardModel和客户端模型已经转换为Json字符串,我只是将它们放入字典中。转换后的模型如下所示

"cardModel": {
    "ExpiryYear": 2018,
    "ExpiryMonth": 1,
    "CardNumber": "55555",
    "CardHolderName": "xyz"
}

所以我将这些序列化模型放入字典中,并使用 Alamofire 将这些数据发布到请求正文中。

但是在服务器端这些模型是空的。知道如何按照我想要的方式放置自定义模型吗?请帮忙

PS 我刚刚打印出我的参数字典,并且我已经检查了这个输出

    ["ApiKey": "x-y-z",
     "\cardModel\": "{
     "\ExpiryYear\": 2018,
     "\ExpiryMonth\": 1,
     "\CardNumber\": "\55555\",
     "\CardHolderName\": "\xyz\"
    }
]

我将参数 json 打印输出放入 jsonLint 中,但格式错误。我刚刚删除了“\”并将 [] 替换为 {},然后它似乎是有效的 Json

那我现在应该做什么???请帮忙

更新1: 这是我的端点的有效 json(从 android 发送)

{
"ApiKey": "XXX-XXX-XXX",
"cardModel": {
    "CardHolderName": "Fjj",
    "CardNumber": "555",
    "CardExpiryMonth": 1,
    "CardExpiryYear": 2018
    ......
}

}

最佳答案

首先,您需要一个方法/计算属性,将模型转换为 [String: AnyObject][String: Any] 类型的字典。 然后,不要将模型添加到参数字典中,而是像下面的示例一样添加模型字典。

class CardModel: NSObject {
    var expiryYear: Int?
    var expiryMonth: Int?
    var cardNumber: String?
    var cardHolderName: String?


    var jsonDict: [String: AnyObject] {
        var json: [String: AnyObject] = [:]//Initializing an Empty Dictionary
        json["expiryYear"] = expiryYear as AnyObject // Inserting expiryYear into Dictionary
        json["expiryMonth"] = expiryMonth as AnyObject // Inserting expiryMonth into Dictionary
        json["cardNumber"] = cardNumber as AnyObject // Inserting cardNumber into Dictionary
        json["cardHolderName"] = cardHolderName as AnyObject // Inserting cardHolderName into Dictionary
        return json // returning newly populated dictionary
    }
}

func requestToServer(cardModel: CardModel) {
    var parameters = [String: AnyObject]()
    parameters["ApiKey"] = "dfv12345df234t" as AnyObject
    parameters["cardModel"] = cardModel.jsonDict as AnyObject// adding card model dictionary into you paramters dictionary.

    //Same logic will be use for your next clientModel
}

关于Ios如何使用Alamofire发布多个自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50017231/

相关文章:

ios - 如何正确编码 URL 字符串

iphone - 在tableView中选择多个单元格并将所选单元格显示在另一个tableView单元格中作为标签?

java - 如何反序列化可能是字符串、对象或列表的 json/gson

ios - Xcode:Table View Cell 不会自动调整其高度

iOS App Store 更新 - 打补丁?

ios - 在 CCSprite 中淡入淡出图像?

javascript - AngularJS、MySQL、PHP、JSON - 数据库中未显示的数据

javascript - RDF 可以在 MarkLogic 中与 JSON 一起使用吗?

ios - DiffableDataSource:快照不会重新加载页眉和页脚

ios - 通过滑动显示单个单元格的 UICollectionView 来触发函数