如何将JSON对象插入数组?

时间:2019-05-31 06:19:02

标签: ios arrays json swift

我有一个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是一个字符串类型的数组。(这是问题所在)。我将每个乘客的详细信息存储在一个数组中 paramarray,并且每当用户完成添加详细信息时,paramarray就会根据passengerparameterarray的位置添加到indexPath中。 (1位乘客=在第0个索引上加了2,在第0个和第1个索引上加了依此类推)。

但是当我将其发送到服务器时,就像

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

这给了我错误,因为我在数组内部有一个数组。我该如何解决?我尝试更改为字符串,但是由于"位于{之前,String不是JSON对象,因此出现了错误。

我将每个数组转换为JSON对象。但是我如何用JSON对象作为主数组呢?由于Main数组是[String]()。如果我尝试更改为[String:Any](),诸如

array.insert()

不会工作。

该如何解决?我想将JSON对象添加到数组中,然后将其发送到服务器。

2 个答案:

答案 0 :(得分:1)

尝试

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")

答案 1 :(得分:0)

这是一个愚蠢的问题。这一切都是因为原来我的数组是

var passengerparameterarray = [Array<Any>]()

代替

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

谁按预期阻止了我插入“ String:Any”形式的JSON对象