2017-02-23 95 views
2

我需要做一個請求主體看起來像這樣:創建請求體Alamofire

{ 
    "accepted" : [ 
    { 
     "deposit" : 2000, 
     "name" : "Tuxedo", 
     "rent" : 100, 
     "id" : 3, 
     "favourited_by" : [ 

     ], 
     "tag_id" : 21, 
     "status" : "unknown", 
     "image_url" : "https:\/\/www.moss.co.uk\/images\/extralarge\/965549415_01.jpg", 
     "addresses" : [ 

     ] 
    }, 
    { 
     "deposit" : 3000, 
     "name" : "ps4", 
     "rent" : 50, 
     "id" : 2, 
     "favourited_by" : [ 

     ], 
     "tag_id" : 16, 
     "status" : "unknown", 
     "image_url" : "http:\/\/www.spokeslabs.com\/jstone\/ps4_images\/ps4-hrdware-large18.jpg", 
     "addresses" : [ 

     ] 
    }, 
    { 
     "deposit" : 1000, 
     "name" : "Electric drill", 
     "rent" : 100, 
     "id" : 1, 
     "favourited_by" : [ 

     ], 
     "tag_id" : 11, 
     "status" : "unknown", 
     "image_url" : "https:\/\/static.independent.co.uk\/s3fs-public\/styles\/story_medium\/public\/thumbnails\/image\/2016\/06\/20\/12\/ryobi-rpd800-k-percussion-d.jpg", 
     "addresses" : [ 

     ] 
    } 
    ], 
    "rejected" : [ 

    ], 
    "address" : 
    { 
     "city" : "Hong Kong", 
     "lng" : "114.162699999745", 
     "country" : "Hong Kong", 
     "street" : "Barker Road", 
     "id" : "0", 
     "label" : "Home", 
     "lat" : "22.269837686727" 
    } 
} 

Unfortunantly我送這樣的:

{ 
    "accepted" : [ 
    { 
     "deposit" : 2000, 
     "name" : "Tuxedo", 
     "rent" : 100, 
     "id" : 3, 
     "favourited_by" : [ 

     ], 
     "tag_id" : 21, 
     "status" : "unknown", 
     "image_url" : "https:\/\/www.moss.co.uk\/images\/extralarge\/965549415_01.jpg", 
     "addresses" : [ 

     ] 
    }, 
    { 
     "deposit" : 3000, 
     "name" : "ps4", 
     "rent" : 50, 
     "id" : 2, 
     "favourited_by" : [ 

     ], 
     "tag_id" : 16, 
     "status" : "unknown", 
     "image_url" : "http:\/\/www.spokeslabs.com\/jstone\/ps4_images\/ps4-hrdware-large18.jpg", 
     "addresses" : [ 

     ] 
    }, 
    { 
     "deposit" : 1000, 
     "name" : "Electric drill", 
     "rent" : 100, 
     "id" : 1, 
     "favourited_by" : [ 

     ], 
     "tag_id" : 11, 
     "status" : "unknown", 
     "image_url" : "https:\/\/static.independent.co.uk\/s3fs-public\/styles\/story_medium\/public\/thumbnails\/image\/2016\/06\/20\/12\/ryobi-rpd800-k-percussion-d.jpg", 
     "addresses" : [ 

     ] 
    } 
    ], 
    "rejected" : [ 

    ], 
    "address" : [ 
    { 
     "city" : "Hong Kong", 
     "lng" : "114.162699999745", 
     "country" : "Hong Kong", 
     "street" : "Barker Road", 
     "id" : "0", 
     "label" : "Home", 
     "lat" : "22.269837686727" 
    } 
    ] 
} 

所不同的是在的最後一節JSON。我發送的內容包含一組地址,但我想要發送的內容只包含一個地址對象。

這個請求體被創建方式如下:

var parameters = [String:[AnyObject]]() 
    parameters["rejected"] = rejectedItemsArray as [AnyObject] 
    parameters["accepted"] = acceptedItemsArray as [AnyObject] 
    parameters["address"] = addressArray as [AnyObject] 

    let request = NSMutableURLRequest(URL: NSURL(string: urlString)!) 
    request.setValue(self.token!, forHTTPHeaderField: Constant.tokenUserDefaultsKey) 
    request.HTTPMethod = "POST" 
    do { 
     let data = try NSJSONSerialization.dataWithJSONObject(parameters, options: .PrettyPrinted) 
     let requestBodyString = String(data: data, encoding: NSUTF8StringEncoding) 
     NSLog("Request Body: %@", requestBodyString!) 
     request.HTTPBody = data 
    } catch (_) { 
     NSLog("Failed to encode json for Post Items") 
    } 

如何解決呢?

我想有2個陣列在我的JSON:

1 - 「接受」 2 - 「拒絕」 在我的JSON

和1個單獨的對象:

1 - 「地址」

enter image description here

回答

1

問題是在這條線parameters["address"] = addressArray as [AnyObject]。您正在設置Arrayaddress密鑰,而不是您需要設置字典。因此,像這樣創建addressDic。

let adddressDic = ["city" : "Hong Kong", "lng" : "114.162699999745", "country" : "Hong Kong", 
        "street" : "Barker Road", "id" : "0", "label" : "Home", "lat" : "22.269837686727"] 

現在設置這個Dictionaryaddress關鍵

parameters["address"] = adddressDic 

編輯:您還需要改變這樣的參數的聲明。

var parameters = [String:AnyObject]() 
+0

無法做到,因爲:VAR =參數[字符串:[AnyObject]]()。看我的截圖 –

0
parameters["address"] = addressArray as [Any] 

這裏(在該行的代碼)要分配數組實例。創建'addressArray'的JSON對象(字典),然後將其分配給參數[「address」]

var addresArray = [String : Any]() 

//商店JSON值/在它的信息,然後

parameters["address"] = addressArray as [String : Any]