2015-04-22 5 views
-5

Я застрял в JSON разбор в моем коде. Я много пробовал, но не мог понять, что происходит не так.Parsing json с несколькими массивами

Это мой JSON ответ

[{ 

    "order": { 
     "transaction_id": "bFnRjTPYfD", 
     "status": 0, 
     "created_at": "2015-04-22 09:35:35" 
    } 

}, { 

    "order_items": [{ 
     "item_id": 1, 
     "item_name": "Potato", 
     "item_description": null, 
     "item_salesprice": 14, 
     "item_imagepath": "\/uploads\/veggies\/potato.jpg", 
     "order_quantity": "4 Kg", 
     "order_price": 69.99 
    }, { 

     "item_id": 2, 
     "item_name": "Tomato", 
     "item_description": null, 
     "item_salesprice": 18, 
     "item_imagepath": "\/uploads\/veggies\/tomato.jpg", 
     "order_quantity": "6 Kg", 
     "order_price": 79.99 
    }] 

}] 

Я хочу, чтобы извлечь идентификатор транзакции и имя элемента. Не могли бы вы мне помочь?

Update Ответ:

NSDictionary *Order=[JSONData ValueForKey:@"Order"]; 

NSString *transaction_id=[Order ValueForKey:@"Transaction_id"]; 
+3

Мне было бы приятно посмотреть некоторые из ваших попыток, чтобы мы могли помочь вам лучше. – lihudi

+0

@ user3659166 Пожалуйста, попробуйте мой ответ. –

+3

Пожалуйста, попробуйте что-нибудь, а затем разместите свой вопрос. Вместо публикации JSON Log и попросите других разобрать JSON ..! – Vidhyanand

ответ

-1

Попробуйте .. Для ид сделка ..

NSDictionary *Order=[JSONData ObjectForKey:@"Order"]; 

NSString *transaction_id=[Order ValueForKey:@"Transaction_id"]; 

и для item_id попробовать, ...

NSDictionary *item=[JSONData objectForKey:@"order_items"]; 

NSArray *item_id=[Order ValueForKey:@"item_name"]; 
+0

Комментарии не предназначены для расширенного обсуждения; этот разговор был [перемещен в чат] (http://chat.stackoverflow.com/rooms/75938/discussion-on-answer-by-ashok-londhe-parsing-json-having-multiple-arrays). – Taryn

+0

Намерение начать чат: этот код будет сбой для неправильного имени метода и использования методов KVC или методов NSDictionaries, что приведет к неожиданному поведению. – vikingosegundo

-1

Вы можете получить transaction_id по таким образом,

NSDictionary *OrderJson=[jsonArray objectAtIndex:0]; 
NSDictionary *OrderDic = [OrderJson valueForKey:@"order"]; 
NSString *transactionId=[OrderDic objectForKey:@"transaction_id"]; 

ItemNames находятся в массиве, вы можете получить его for цикла, или предикатами, Здесь я покажу вам for

NSDictionary *order_itemsJson=[jsonArray objectAtIndex:1]; 
NSArray *item=[order_itemsJson objectForKey:@"order_items"]; 
for (NSDictionary *dic in item) { 
    NSLog(@"%@",[dic valueForKey:@"item_name"]); 
} 

Наслаждайтесь Coding !!

+0

Почему методы KVC? – vikingosegundo

+0

Вы даже не знаете, о чем я говорю, не так ли? – vikingosegundo

+0

@vikingosegundo после долгого чата в этом сеансе я понял, что вы хотите объяснить что-то еще. Давайте придумаем что-то, чтобы мы могли узнать все больше и больше. Пожалуйста, объясните, что вы на самом деле хотите рассказать другим. Спасибо –

-1

Выполните следующие действия: вы получите выход.

NSString* transectionId = [[[arrayResponse objectAtIndex:0] valueForKey:@"order"] valueForKey:@"transaction_id"]; 

    NSLog(@"transectionId : %@",transectionId); 

    NSArray* arrayInner = [[arrayResponse objectAtIndex:1] valueForKey:@"order_items"]; 
    for (int i=0; i<arrayInner.count; i++) { 

     NSDictionary* dictInner = [arrayInner objectAtIndex:i]; 

     NSString* itemName = [dictInner valueForKey:@"item_name"]; 

     NSLog(@"Item Name : %@",itemName); 
    } 

Здесь вы получите transaction_id и item_name

Надеется, что это поможет вам.

+0

Почему методы KVC? – vikingosegundo

+0

@vikingosegundo, мы обычно используем KVC для доступа к значению в объективе-c .. я не знаю, что вы ищете. –

+0

Почему вы используете методы KVC вместо правильных методов словаря? – vikingosegundo

Смежные вопросы