Как мне создать и отправить JSON на сервер с помощью Alamofire? - PullRequest
1 голос
/ 16 мая 2019

Я хочу отправить JSON на сервер с подробной информацией о пользователе и параметрах, выбранных пользователем.В настоящее время я просто сохраняю их в простых массивах.

Я хочу создать JSON и отправить его на сервер.Обычно я могу просто добавить каждое из этих полей в Parameter с Alamofire.Но здесь у меня есть проблема в том, что количество полей зависит от количества пользователей (или количества пассажиров).

Я не делал этот тип раньше, и я новичок в разработке iOS.

{
    "contactPerson": {
        "email": {
            "email": "memine@gmail.com",
            "markedForSendingRezInfo": false,
            "preferred": false,
            "shareMarketInd": false
        },
        "personName": {
            "givenName": "Me",
            "shareMarketInd": false,
            "surname": "Mine"
        },
        "phoneNumber": {
            "countryCode": "93",
            "markedForSendingRezInfo": false,
            "preferred": false,
            "shareMarketInd": false,
            "subscriberNumber": "123456789"
        },
        "shareMarketInd": false,
        "useForInvoicing": false
    },
    "curr": "USD",
    "flight1": "{fligh1Info}",
        "flight2": "{flight2Info}",
    "passengers": [{
        "accompaniedByInfant": true,
        "birthDate": {
            "day": 6,
            "fractionalSecond": 0.000,
            "hour": 0,
            "minute": 0,
            "month": 9,
            "orig_day": 6,
            "orig_fracSeconds": 0.000,
            "orig_hour": 0,
            "orig_minute": 0,
            "orig_month": 9,
            "orig_second": 0,
            "orig_timezone": 330,
            "orig_year": 1991,
            "second": 0,
            "timezone": 330,
            "year": 1991
        },
        "hasStrecher": false,
        "parentSequence": 0,
        "passengerTypeCode": "ADLT",
        "personName": {
            "givenName": "some",
            "nameTitle": "Mr.",
            "shareMarketInd": false,
            "surname": "guy"
        },
        "requestedSeatCount": 1,
        "shareMarketInd": false,
        "unaccompaniedMinor": false
    }, {
        "accompaniedByInfant": false,
        "birthDate": {
            "day": 10,
            "fractionalSecond": 0.000,
            "hour": 0,
            "minute": 0,
            "month": 10,
            "orig_day": 10,
            "orig_fracSeconds": 0.000,
            "orig_hour": 0,
            "orig_minute": 0,
            "orig_month": 10,
            "orig_second": 0,
            "orig_timezone": 330,
            "orig_year": 2010,
            "second": 0,
            "timezone": 330,
            "year": 2010
        },
        "hasStrecher": false,
        "parentSequence": 0,
        "passengerTypeCode": "CHLD",
        "personName": {
            "givenName": "some",
            "shareMarketInd": false,
            "surname": "child"
        },
        "requestedSeatCount": 1,
        "shareMarketInd": false,
        "unaccompaniedMinor": false
    }, {
        "accompaniedByInfant": false,
        "birthDate": {
            "day": 1,
            "fractionalSecond": 0.000,
            "hour": 0,
            "minute": 0,
            "month": 1,
            "orig_day": 1,
            "orig_fracSeconds": 0.000,
            "orig_hour": 0,
            "orig_minute": 0,
            "orig_month": 1,
            "orig_second": 0,
            "orig_timezone": 330,
            "orig_year": 2018,
            "second": 0,
            "timezone": 330,
            "year": 2018
        },
        "hasStrecher": false,
        "parentSequence": 0,
        "passengerTypeCode": "INFT",
        "personName": {
            "givenName": "some",
            "shareMarketInd": false,
            "surname": "kid"
        },
        "requestedSeatCount": 1,
        "shareMarketInd": false,
        "unaccompaniedMinor": false
    }],
    "pwd": "password",
    "requestPurpose": "MODIFY_PERMANENTLY_AND_CALC",
    "unm": "username"
}

Это мой JSON.Здесь число flight1 flight2 .... зависит от количества выбранных пользователем рейсов.

и количество объектов внутри passengers зависит от количества выбранных пользователем пассажиров.

Как мне выполнить эту часть?

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Попробуйте создать словарь типа [String: Any], как показано в примере ниже.

let param : [String: Any] = ["contactPerson": [ "email":[ "email": "text@mail.com"], "markedForSendingRezInfo": false], "personName": [], "curr": "USD", "flight1" : [], "flight2" : [] ]

Вы можете добавить значение ключа в param согласно требованию параметра запроса.затем передайте этот параметр параметру запроса alamofire.

1 голос
/ 16 мая 2019

Вам необходимо добавить свои данные в словарь

Swift5

let dictData = ["name": "vicky", "phoneNumber": "01234567"]
    let encoder = JSONEncoder()
    if let jsonData = try? encoder.encode(dictData) {
        if let jsonString = String(data: jsonData, encoding: .utf8) {
            print(jsonString)
        }
    }
...