2017-02-23 5 views
2

anlegen muss ich eine Anfrage Körper wie folgt aussehen machen:einen Antrag Körper für 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 Ich sende diese:

{ 
    "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" 
    } 
    ] 
} 

Der Unterschied ist im letzten Abschnitt der JSON. Was ich sende enthält ein Array von Adressen, aber ich möchte senden nur ein Adressobjekt enthält.

wird die folgende Art und Weise Diese Anforderung Körper erstellt:

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

Wie kann ich das Problem beheben?

Ich möchte 2 Arrays in meinem JSON haben:

1 - "akzeptiert" 2 - "abgelehnt"

Und ein einzelnes Objekt in meine JSON:

1 - "Adresse"

enter image description here

Antwort

1

Problem ist in dieser Zeile parameters["address"] = addressArray as [AnyObject]. Sie setzen Array mit address Schlüssel statt, dass Sie Wörterbuch festlegen müssen. Also erstelle addressDic so.

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

Jetzt setzen Sie diesen Dictionary mit address Schlüssel

parameters["address"] = adddressDic 

Edit: Sie müssen auch die Deklaration von Parametern, wie dies ändern.

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

kann nicht wegen getan werden: var Parameter = [Zeichenfolge: [ANYOBJECT]](). Siehe meinen Screenshot –

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

Hier (in dieser Codezeile) Sie Array-Instanz zuweisen. Erstellen Sie ein JSON-Objekt (Dictionary) von 'addressArray' und weisen Sie es dann dem Parameter ["address"]
z.

var addresArray = [String : Any]() 

// Speichere json Werte/Angaben in sie und dann

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