gpt4 book ai didi

ios - 使用 swift 在 Alamofire 中发送带有对象数组作为参数的 JSON

转载 作者:行者123 更新时间:2023-11-29 05:35:33 26 4
gpt4 key购买 nike

我对 Swift 和 Alamofire 很陌生,我想要完成的是发送一个数据结构,如下所示:

{
"name" : "Test name",
"intention" : "Purpose of practice test",
"id_frequency" : "1",
"member": [
{
"id_member" : "1",
"email" : "member1@gmail.com",
"id_member_type" : 1
},
{
"id_member" : "4",
"email" : "member2@gmail.com",
"id_member_type" : 3
},
{
"id_member" : "7",
"email" : "member3@gmail.com",
"id_member_type" : 3
},
{
"id_member" : "5",
"email" : "member4@gmail.com",
"id_member_type" : 3
},
{
"id_member" : "6",
"email" : "member5@gmail.com",
"id_member_type" : 3
}
]
}

我继续构建所需 json 的方式如下:

 var membersArray = [AnyObject]()
for i in 0..<members.count {
let json: [String: Any] = [
"id_member": members[i].idMember!,
"email": members[i].email!,
"id_member_type": "\(Int(members[i].idMemberType)!)",
]
membersArray.append(json as AnyObject)
}

let jsonMembers = JSON(membersArray)

let jsonObject: [String: Any] = [
"member" : jsonMembers,
"name": name!,
"intention": intention!,
"id_frequency": frequency!
]

let jsonUpdate = JSON(jsonObject)

使用此结构化 json,上面的行 (jsonUpdate)。我继续执行 webService。

 WevServices.createRequest(requestInfo: jsonUpdate) { (result) in
print(result)
}

我的网络服务方法,如下所示:

static func createRequest(requestInfo: JSON, completion: @escaping (_ result: String) -> Void){

let url = URL(string: "http://ws.someURL.com/CreateRequest")

let parameters: [String : Any] = ["name" : "\(requestInfo["name"])", "intention" : "\(requestInfo["intention"])", "id_frequency" : "\(requestInfo["id_frequency"])", "member": requestInfo["member"]]

Alamofire.request(url!, method: .post, parameters: parameters, encoding: URLEncoding.httpBody).responseString { response in
print(response)

}
}

我从服务器收到一个错误,表明发送数据不正确。

注意:我的应用程序使用 Lumen 作为后端。

最佳答案

做你需要做的事情的最好方法是:

func JSONToString(json: [String : String]) -> String?{
do {
let mdata = try JSONSerialization.data(withJSONObject: json, options: JSONSerialization.WritingOptions.prettyPrinted) // json to the data
let convertedString = String(data: mdata, encoding: String.Encoding.utf8) // the data will be converted to the string
print("the converted json to string is : \(convertedString!)") // <-- here is ur string

return convertedString!

} catch let myJSONError {
print(myJSONError)
}
return ""
}

对于 alamofire 请求,请执行以下操作:

static func createRequest(requestInfo: [String :String], completion: @escaping (_ result: String) -> Void){

let url = URL(string: "http://ws.someURL.com/CreateRequest")

let parameters: [String : Any] = ["request" : JSONToString(json : requestInfo)!]

Alamofire.request(url!, method: .post, parameters: parameters, encoding: URLEncoding.httpBody).responseString { response in
print(response)

}

关于ios - 使用 swift 在 Alamofire 中发送带有对象数组作为参数的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57067143/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com