2016-07-02 16 views
-1

Ich arbeite an einer iOS App mit Server-Kommunikation. Kann mir jemand helfen, ein Wörterbuch wie dieses zu bauen?Wie schaffe ich ein verschachteltes Wörterbuch, IOS - Objective C

{ 
    "api_key": "APIKey", 
    "items": [{ 
     "item_id": "10", 
        "quantity": "10" 
    }, { 
     "item_id": "11", 
        "quantity": "10" 
    }], 
    "user_id": "UserID", 
    "user_address": "address", 
    "user_number": "number" 

} 

Hier ist mein Code JSON zu erstellen, die eine ungültige json produzieren

NSMutableArray *arrayItems = [NSMutableArray new]; 
for (int i=0; i<[ordeArray count]; i++) { 
    ItemBO *item = [ordeArray objectAtIndex:i]; 
    NSString *quantity = [NSString stringWithFormat:@"%i",item.quantity]; 
    NSDictionary *dic = @{@"quantity": quantity, @"item_id":item.itemID }; 
    [arrayItems addObject: dic]; 
} 
NSString * userID = [[NSUserDefaults standardUserDefaults] valueForKey:USERID]; 
NSDictionary *mainDictionary = [[NSDictionary alloc] initWithObjectsAndKeys: 

        APIKEY, @"api_key", 
          orderinfo.deliveryAddress , @"delivery_address", 
          orderinfo.deliveryTime , @"delivery_time", 
          orderinfo.contactNumber , @"delivery_contact", 
          arrayItems , @"items", 
          userID , @"user_id", 
          nil]; 
return mainDictionary; 
+0

eigentlich bin ich nicht in der Lage, diesen Teil "items" zu erstellen: [{ "item_id": "10", "Quantität": "10" }, { "item_id": "11" ist, "Menge": "10" }], – iOSGeek

+0

Sie können meine Antwort dafür überprüfen :) –

+0

Ich gebe ungültige JSON zurück. – iOSGeek

Antwort

2

Sie Wörterbuch, indem Schlüssel-Wert-Paar seinen einfachen Mechanismus zum Wörterbuch erstellen.

In Ihrem Fall:

Sie haben ein Array nehmen für Elemente mit dem Objekt von Artikeln Wörterbuch wie:

NSDictionary *dic = @{ 
     "item_id": "10", 
        "quantity": "10" 
    }; 

diese Art von Objekten in NSMutableArray hinzufügen:

NSMutableArray *arrayItems = [NSMutableArray new]; 
[arrayItems addObject: dic]; 

Auf diese Weise können Sie mehrere Wörterbücher in diesem Array hinzufügen, nachdem Sie dies getan haben, können Sie ein anderes Wörterbuch nehmen, das alle über Schlüsselwertpaar wie:

enthält
NSMutableDictionary *dicMain = [NSMutableDictionary new]; 
[dicMain setValue:"APIKey" forKey:"api_key"]; 
[dicMain setObject:arrayItems forKey:"items"]; // add items array in dictionary 

und so weiter alle Schlüssel-Wert-Paar und das ist es getan.

Konvertieren dieses Wörterbuch in JSON-Daten diese diese Daten als Anfrage

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:[NSDictionary dictionaryWithDictionary:dict] options:0 error:nil]; 

und setzen body.like dieser

[request setHTTPMethod:@"POST"]; 
[request setHTTPBody:objData]; 

Hoffnung mit diesen Ihnen helfen könnte. :)

+0

Es gibt ungültige JSON NSMutableArray * arrayItems = [NSMutableArray new]; für (int i = 0; i <[Ordnungszahl]; i ++) { ItemBO * item = [ordeArray objectAtIndex: i]; NSString * Quantität = [NSString stringWithFormat: @ "% i", item.quantity]; NSDictionary * dic = @ { Menge: @ "Menge", item.itemID: @ "item_id" }; [arrayItems addObject: dic]; } – iOSGeek

+0

überprüfen Sie diese Zeile NSDictionary * dic = @ {Menge: @ "Menge", item.itemID: @ "item_id"}; In diesem Zeilenschlüssel sollte zuerst in diesem Format das mit NSDictionary ersetzt werden. Dic = @ {@ "menge": menge, @ "item_id": item.itemID}; –

+0

Ist die Anwendung abstürzt oder Array nicht wie erwartet erhalten? Ich habe das genaue Problem nicht bekommen. Kannst du das bitte etwas genauer erklären? –

-1
NSDictionary *dic = @{ 
    @"api_key": @"APIKey", 
    @"items": @[@{ 
     @"item_id": @"10", 
     @"quantity": @"10" 
    }, @{ 
     @"item_id": @"11", 
     @"quantity": @"10" 
    }], 
    @"user_id": @"UserID", 
    @"user_address": @"address", 
    @"user_number": @"number" 
} 
Verwandte Themen