我对Swift很陌生。我有疑问。我必须发布一个以数组开头的请求。
像这样:
[{"columnName":"","columnLogic":"LIKE","columnValue":""}]
我试过用邮递员和退货价值,我想。
通常,如果它不是以";然后我可以发布请求并返回值。但从"["开始,我尝试了很多没有成功的事情:(请帮帮我!我添加了我使用的以"{"json post开始的代码,这些代码返回错误。`
private func getDataCars(){
struct Result: Codable {
let status: String
let document: DocumentStruct
}
struct DocumentStruct : Codable {
let pageno: Int
let total_count: String
let records: [RecordStruct]
}
struct RecordStruct: Codable{
let user_id:String
let user_name:String
let user_mail:String
let user_password:String
let user_phone:String
let user_durum:String
}
let parameters = [["columnName": "nameofcolumn", "columnLogic": "LIKE", "columnValue": "searchstring"]]
let url = URL(string: "http://getapiadress")!
let AuthTokenString = "somekey"
let session = URLSession.shared
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("Bearer " + AuthTokenString, forHTTPHeaderField: "Authorization")
do {
request.httpBody = try JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) // pass dictionary to data object and set it as request body
} catch let error {
print(error.localizedDescription)
}
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
let task = session.dataTask(with: request, completionHandler: { data, response, error in
guard error == nil else {return}
guard let data = data else {return}
var result: Result?
do{
result=try JSONDecoder().decode(Result.self, from: data)
}
catch{
print("failed")
print(error)
}
guard let json = result else {
return
}
print(json.document.records[0].car_marka)
})
task.resume()
}`
这是我对邮件请求的回应:
{
"status": "success",
"code": 1,
"message": "users found",
"document": {
"pageno": "1",
"pagesize": "30",
"total_count": "1",
"records": [
{
"user_id": "1",
"user_name": "Boss",
"user_mail": "boss@boss.com",
"user_password": "boss",
"user_phone": "123456789",
"user_durum": "admin"
}
]
}
}
如果您想像开头提到的那样发送字典,但在XCode 中声明JSON变量时遇到运行时错误
[{"columnName":"","columnLogic":"LIKE","columnValue":""}]
然后在你的代码中,你可以这样做
// this is the dictionary format in Swift
let parameters = ["columnName": "","columnLogic": "LIKE","columnValue": ""]
do {
// This step will convert your dictionary to jsonData
let jsonData = try? JSONSerialization.data(withJSONObject: parameters)
request.httpBody = jsonData
} catch let error {
print(error.localizedDescription)
}
但是,如果你想用一个对象数组发出POST请求,那么你可以做这样的
struct ColumnInfo: Codable {
let columnName: String
let columnLogic: String
let columnValue: String
}
let parameters = [ColumnInfo(columnName: "nameofcolumn", columnLogic: "LIKE", columnValue: "searchstring")]
let url = URL(string: "http://getapiadress")!
let AuthTokenString = "somekey"
let session = URLSession.shared
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("Bearer " + AuthTokenString, forHTTPHeaderField: "Authorization")
do {
let jsonEncoder = JSONEncoder()
jsonEncoder.outputFormatting = .prettyPrinted
request.httpBody = try jsonEncoder.encode(parameters) // pass dictionary to data object and set it as request body
} catch let error {
print(error.localizedDescription)
}