I\'m having a bit of trouble structuring my parameters so that our server API would be able to read it as valid JSON.
Alamofire uses parameters like this in swift la
if you are using SwiftyJSON, you can write like this
let array = ["2010-12-13T5:03:20","2010-12-13T5:03:20"]
let paramsJSON = JSON(array)
var arrString = paramsJSON.rawString(NSUTF8StringEncoding)
You need to create a NSArray object for array parameters.
var yourParameters = [
"String": "a string",
"Int": 1,
"Array": NSArray(
array: [
"a", "b", "c"
])
]
Swift 2.2 and using SwiftyJSON.swift
You can use like this.
var arrayList : [String: AnyObject]//one item of array
var list: [JSON] = []//data array
for i in 0..<10//loop if you need
{
arrayList = [
"param1":"",
"param1":"",
"param2":["","",""]
]
list.append(JSON(arrayList))//append to your list
}
//params
let params: [String : AnyObject]=[
"Id":"3456291",
"List":"\(list)"//set
]
In case, there is a need to pass array directly as a parameter for a alamofire request, the following method worked for me.
source: https://github.com/Alamofire/Alamofire/issues/1508
let headers = NetworkManager.sharedInstance.headers
var urlRequest = URLRequest(url: URL(string: (ServerURL + Api))!)
urlRequest.httpMethod = "post"
urlRequest.allHTTPHeaderFields = headers
let jsonArrayencoding = JSONDocumentArrayEncoding(array: documents)
let jsonAryEncodedRequest = try? jsonArrayencoding.encode(urlRequest, with: nil)
var request: Alamofire.DataRequest? = customAlamofireManager.request(jsonAryEncodedRequest!)
request?.validate{request, response, data in
return .success
}
.responseJSON {
Using Swift 5 You can use like this.
var authParams:[String:Any] = [:]
var authParamsObject:[String:Any] = [:]
authParamsObject["is_urgent"] = data_any
authParamsObject["body"] = data_any
authParams = ["note_set" : authParamsObject]
Json Result :
{
"note_set":
{
"is_urgent": true,
"body": "string"
}
}
In my case.
let query = "blm"
let allCountriesParameter = ["country": "*"]
let jsonObject: [String: Any] = ["query": query, "locations": [allCountriesParameter]]
let httpBody = try JSONSerialization.data(withJSONObject: jsonObject)
How it looks.
print(String(data: httpBody, encoding: .utf8))
{
"query":"blm",
"locations":[
{
"country":"*"
}
]
}