2015-04-22 2 views
-2

Я хочу отправить значение в формате json на сервер, но я застрял в формате json. Я искал alot на google, но все равно не получил точный формат.Как создать объект json в ios

{ 

    "accountId": "14", 
    "order_items": [ 
     { 
     "item_id": "5", 
     "quantity": "4 Kg", 
     "price": " 69.99" 
     }, 
     { 

     "item_id": "6", 
     "quantity": "6 Kg", 
     "price": " 79.99" 
     } 
    ] 
} 

Я попытался следующий код:

NSDictionary *[email protected]{@"item_id" : itemide, 
        @"quantity" : @"10", 
        @"price" : @"100"}; 


NSDictionary *dictionary = @{@"accountId" : @"14", 
          @"order_items" : dict}; 

NSError *error; 
NSData *postData = [NSJSONSerialization dataWithJSONObject:dictionary 
                  options:0 
                  error:&error]; 

if (error) 
    NSLog(@"Failure to serialize JSON object %@", error); 

NSURL *url = [NSURL URLWithString:@"http://api.lococo.in/orders"]; 
NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:url 
                  cachePolicy:NSURLRequestReloadIgnoringLocalCacheData 
                  timeoutInterval:180.0]; 

[request setHTTPMethod:@"POST"]; 
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setValue:@"AGDHFGH243SFS" forHTTPHeaderField:@"X-Auth-User"]; 
[request setValue:@"abcgdg#dg" forHTTPHeaderField:@"X-Auth-Token"]; 
[request setHTTPBody:postData]; 

Пожалуйста, помогите мне с этим. Как это получить в формате выше?

ответ

2

У вас не хватает, что order_items является массивом.

NSDictionary* item1 = @{ @"item_id": @"5", @"quantity": @"4 Kg", @"price": @" 69.99" }; 
NSDictionary* item2 = @{ @"item_id": @"6", @"quantity": @"6 Kg", @"price": @"79.99" }; 

NSArray* orderItems = @[item1, item2]; 
NSDictionary* order = @{ @"accountId": @"24", @"order_items": orderItems }; 

И вот что вы передаете NSJSONSerialization.

+0

Я пробовал свой код. Его рабочие :) Thanxs :) –

0

Попробуйте

NSDictionary *[email protected]{@"item_id" : itemide, 
        @"quantity" : @"10", 
        @"price" : @"100"}; 
NSDictionary *dictionary = @{@"accountId" : @"14", 
          @"order_items" : dict}; 
NSError *error; 
NSData *data = [NSJSONSerialization dataWithJSONObject:dictionary options:NSJSONWritingPrettyPrinted error:&error]; 

id jsonObject = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error]; 
+0

Как я могу использовать его для получения нескольких значений –

0

Вы должны присвоить значение словаря, как массив.

Попробуйте это:

NSDictionary *[email protected]{@"item_id" : itemide, 
        @"quantity" : @"10", 
         @"price" : @"100"}; 


NSMutableDictionary *dictionary = @{@"accountId" : @"14"}; 
[dictionary setObject:arrayContainer forKey:@"order_items"]; 

NSMutableArray *arrayContainer = [NSMutableArray array]; 
[arrayContainer addObject:dict]; 
+0

Может ли сказать вам, какой идентификатор провайдера дал вам, я пробовал ур код, который он разбил на setObject –

+0

Вы должны использовать dict. См. Обновление выше. – TiagoMJFlores