как отправить эти параметры с помощью alamofire - PullRequest
0 голосов
/ 01 января 2019

Я хочу отправить эти параметры с помощью Alamofire , но проблема заключается в том, что внутри параметров существует массив String с именем person.Как мне преобразовать его в Dictionary, чтобы можно было его отправить?

Вот параметры для отправки:

{
  "BRANCH_ID" : 23,
  "PACKAGE_ID": 10,
  "ARRIVE_TIME_ID": 7,
  "ARRIVE_DATE" : "12/2/2014",
  "IS_TABLE" : true,
  "IS_TICKET" : false,
  "NOTE": "hi",
  "persons": "[{
    \"ID\":\" 1\",
    \"FIRST_NAME\":\"Ali\",
    \"LAST_NAME\":\"Ahmed\",
    \"GENDER\":\"Male\",
    \"EMAIL\":\"mz_@.fgj\",
    \"FACEBOOK_URL\":\"www.google.com\",
    \"IS_MEMBER\":\"true\",
    \"IS_BOOKER\":\"true\"  
  }]",
  "addons": "[]"
}

Что у меня есть:

let url = URLs.addPlaceBooking
let headers: HTTPHeaders = ["Content-type": "application/json"]
let paramters : [String : Any ] = [
    "BRANCH_ID" : "23",
    "PACKAGE_ID": "10",
    "ARRIVE_TIME_ID": "12",
    "ARRIVE_DATE" : "12/2/2014",
    "IS_TABLE" : true,
    "IS_TICKET" : false ,
    "NOTE": "",
    "persons" : [
        "ID": "1",
        "FIRST_NAME":"Ali",
        "LAST_NAME":"Ahmed",
        "GENDER":"Male",
        "MOBILE":"0111281456",
        "EMAIL":"mz_@.fgj",
        "FACEBOOK_URL":"www.google.com",
        "IS_MEMBER": true,
        "IS_BOOKER": true],
        "addons": []
    ]
]

Alamofire.request(url, method: .post , parameters:  paramters, encoding: URLEncoding.default , headers: headers).responseJSON { respons  in
    switch respons.result {
        case .success(let value ): print(value)
        case .failure(let error): print(error)
    }
}

Ответы [ 2 ]

0 голосов
/ 02 января 2019

В JSON "person" имеет строковое значение, а не массив объектов, а "addons" также имеет строковое значение.Я не думаю, что это то, что вы хотите, но вот как получить его в Swift.

let json: [String: Any] = ["BRANCH_ID": 23, "PACKAGE_ID": 10,
                           "ARRIVE_TIME_ID": 7,
                           "ARRIVE_DATE" : "12/2/2014",
                           "IS_TABLE" : true,
                           "IS_TICKET" : false,
                           "NOTE": "hi",
                           "persons": "[{ " + // <-- Multi-line string not array of objects
                            "\"ID\":\" \"1\", " +
                            "\"FIRST_NAME\":\"Ali\", " +
                            "\"LAST_NAME\":\"Ahmed\", " +
                            "\"GENDER\":\"Male\", " +
                            "\"EMAIL\":\"mz_@.fgj\", " +
                            "\"FACEBOOK_URL\":\"www.google.com\", " +
                            "\"IS_MEMBER\":\"true\", " +
                            "\"IS_BOOKER\":\"true\" " +
                            "}]", // <-- end of Multi-line string
                           "addons": "[]"] // <-- String not array

let string = try! String(data: JSONSerialization.data(withJSONObject: json, options: .prettyPrinted), encoding: .utf8)!
print(string)
0 голосов
/ 02 января 2019

Похоже, проблема в persons, параметр - это массив словарей (каждый словарь представляет человека);Основываясь на paramters, который вы реализовали в своем коде:

let paramters : [String : Any ] = [
    "BRANCH_ID" : "23",
    "PACKAGE_ID": "10",
    "ARRIVE_TIME_ID": "12",
    "ARRIVE_DATE" : "12/2/2014",
    "IS_TABLE" : true,
    "IS_TICKET" : false ,
    "NOTE": "",
    "persons" : [ "ID": "1",
                  "FIRST_NAME":"Ali",
                  "LAST_NAME":"Ahmed",
                  "GENDER":"Male",
                  "MOBILE":"0111281456",
                  "EMAIL":"mz_@.fgj",
                  "FACEBOOK_URL":"www.google.com",
                  "IS_MEMBER": true,
                  "IS_BOOKER": true] ,
    "addons": []
]

вы реализуете persons как одиночный словарь вместо массива словарей.

Исправление заключается в объявлении person как массива, который содержит один словарь, как:

let paramters : [String : Any ] = [
    "BRANCH_ID" : "23",
    "PACKAGE_ID": "10",
    "ARRIVE_TIME_ID": "12",
    "ARRIVE_DATE" : "12/2/2014",
    "IS_TABLE" : true,
    "IS_TICKET" : false ,
    "NOTE": "",
    "persons" : [[ "ID": "1",
                  "FIRST_NAME":"Ali",
                  "LAST_NAME":"Ahmed",
                  "GENDER":"Male",
                  "MOBILE":"0111281456",
                  "EMAIL":"mz_@.fgj",
                  "FACEBOOK_URL":"www.google.com",
                  "IS_MEMBER": true,
                  "IS_BOOKER": true]] ,
    "addons": []
]

В сторону примечания: это должны быть «параметры», а не «параметры» ?

...