Как вставить объект JSON в массив? - PullRequest
0 голосов
/ 31 мая 2019

У меня есть JSON

"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",
                "gender":"M" 
        "personName": {
            "givenName": "v",
            "nameTitle": "MR",  
            "shareMarketInd": false,
            "surname": "j"
        },
        "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
    },

и т. Д. В зависимости от количества пассажиров.

Я должен отправить это на сервер в

let param : [String: Any] =[ "passengers":passengerparameterarray,"pwd": password,"requestPurpose": "MODIFY_PERMANENTLY_AND_CALC","unm": username ]

Здесь passengerparameterarray - массив типа string (здесь проблема).Я хранил данные о каждом пассажире в массиве paramarray и всякий раз, когда пользователь заканчивает добавлять детали, paramarray добавляется к позиции passengerparameterarray on в зависимости от indexPath.(1 пассажир = добавлен в 0-й индекс, 2 = в 0-й и 1-й индекс и т. Д.).

Но когда я отправляю его на сервер, он выглядит как

"passengers" : [ [ .....  ] ]

Это дает мне ошибкукак у меня есть массив внутри массива.Как это исправить?Я пытаюсь перейти на строку, но это дает мне ошибку, так как String не является объектом JSON из-за ", предшествующего {.

. Я преобразовал каждый массив в объект JSON.Но как мне JSON Object основной массив?В качестве основного массива используется [String]().Если я попытаюсь изменить на [String:Any](), такие вещи, как

array.insert()

Не будут работать.

Как это исправить?Я хочу добавить объект JSON в массив и затем отправить его на сервер.

Ответы [ 2 ]

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

попробуйте

var param : [String:Any] = ["requestedSeatCount" : 1, "gender" : "M", "parentSequence" : 0, "passengerTypeCode" : "ADLT", "shareMarketInd" : false]

param.updateValue(["nameTitle" : "MR", "givenName" : "aaaa", "surname" : "aaa"], forKey: "personName")
param.updateValue(["year" : "2019", "day" : "29", "month" : "5"], forKey: "birthDate")
0 голосов
/ 31 мая 2019

Это был глупый вопрос.Все это произошло потому, что изначально мой массив был

var passengerparameterarray = [Array<Any>]()

вместо

var passengerparameterarray = Array<[String: Any]>()

, что, как и ожидалось, не позволило мне вставить объект JSON в форме "String: Any"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...