2014-10-27 2 views
-3

Вот мой код, когда я запускаю его, я получаю: «2014-10-26 19: 02: 09.153 Приложение [27372: 1281902] Цена: ( )».JSON Parsing Error (пустой ответ)

Мне было интересно, почему, ошибки не проходят, и это честно смущает меня.

(я получаю пустой ответ на "omc_usd_price")

@try 
{ 
    NSURL *url = [NSURL URLWithString:@"https://omnicha.in/api?method=getinfo"]; 
    NSData *data=[NSData dataWithContentsOfURL:url]; 
    NSError *error; 

    NSMutableDictionary *JSONStuff= [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &error]; 

    NSLog(@"%@",JSONStuff); 

    NSMutableArray * OMCArray = [[NSMutableArray alloc]init]; 

    NSArray * responseArr = JSONStuff[@"omc_usd_price"]; 

    for(NSDictionary * dict in responseArr) 
    { 
     [OMCArray addObject:[dict valueForKey:@"omc_usd_price"]]; 

    } 


    NSLog(@"Price: %@ test", OMCArray); // Here you get the Referance data 
} 
@catch (NSException *exception) { 
    NSLog(@"%@", exception); 

} 
@finally { 

} 

EDIT:

Пробовал это, я не думаю, что я сделал это право либо!

NSMutableArray * OMCArray = [[NSMutableArray alloc]init]; 
    NSMutableArray * OMCArray2 = [[NSMutableArray alloc]init]; 

    NSArray * responseArr = JSONStuff[@"response"]; 
    NSArray * responseArr2 = JSONStuff[@"omc_usd_price"]; 

    for(NSDictionary * dict in responseArr) 
    { 
     [OMCArray addObject:[dict valueForKey:@"response"]]; 

     for(NSDictionary * dict2 in responseArr2) 
     { 
      [OMCArray addObject:[dict2 valueForKey:@"omc_usd_price"]]; 
     } 
    } 


    NSLog(@"Price: %@ test", OMCArray2); // Here you get the Referance data 
+0

Ну, если 'JSONStuff [@" omc_usd_price "]' появляется пустым или нуль, вы можете это получить. И так как в словаре JSONStuff нет записи с именем «omc_usd_price», которая будет ожидаться. –

+0

Вы правы - это неправильно. –

ответ

1

Вот словарь JSONStuff:

{ 
    "error":false, 
    "response":{ 
     "block_count":96136, 
     "difficulty":12.18364177, 
     "netmhps":234.652099, 
     "seconds_since_block":694, 
     "avg_block_time":196.533, 
     "total_mined_omc":6426691.6, 
     "omc_btc_price":7.0e-6, 
     "omc_usd_price":0.0025, 
     "market_cap":15833.5909 
    } 
} 

Как вы можете видеть, нет записи в словаре под названием "omc_usd_price". Там есть запись с этим именем в словаре «ответ», но вы этого не просили.

+0

Не могли бы вы подробно рассказать о том, как я могу это исправить? Извините, я не так хорош в ObjC. – ProgrammingHF

+0

У вас есть словарь в словаре. Получите внутренний словарь, а затем попросите ввести в нем цену. –

+0

Я попробовал что-то еще (что, как я думал, вы, ребята, имели в виду), тоже не работал. – ProgrammingHF

0

Если вы хотите получить omc_usd_price, как указано в вашем коде, вам необходимо разобрать 2 словаря. Вы должны сначала проанализировать словарь с ответом на ключ, и это даст вам новый словарь.

Затем в этом новом словаре вы должны разобрать/найти ключ omc_usd_price.

Кроме того, вы не получаете массив назад, а double или float или даже строку.