2013-09-05 4 views
0

Я пытаюсь получить форму слова json, но, похоже, работает следующий код-доцент. Я получаю JSON, но не могу получить словарь от него.Получение словаря из JSON

NSString *str = [[NSMutableString alloc] initWithData:responseCust encoding:NSUTF8StringEncoding]; 
NSLog(@"CUSTOMER string -----################ %@", str); 

if(str.length>5) 
{ 
    SBJSON *jsonparser=[[SBJSON alloc]init]; 
    NSDictionary *res= [jsonparser objectWithString:str]; 

    NSLog(@"Contants Results %@",res); 

    [jsonparser release]; 
    [str release]; 
} 

Thank you.

+4

используйте NSJSONSerialization. –

+0

Пожалуйста, объясните сами. Вы получаете (видимо, действительную) строку JSON, но «Результаты для участников» печатают «(null)»? Если это так, сначала скопируйте/вставьте JSON в онлайн-парсер JSON, чтобы проверить его достоверность. –

+0

Прочтите https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html –

ответ

2

Пожалуйста, следуйте приведенным ниже код

NSURL * url=[NSURL URLWithString:str]; 

NSData * data=[NSData dataWithContentsOfURL:url]; 

NSError * error; 

//Get json data in Dictionary 
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options: NSJSONReadingMutableContainers error: &error]; 

NSLog(@"%@",json); 

попробовать это ..

+0

привет, использовал ваш метод, и теперь я получаю эту ошибку -JSONValue не удалось. Трассировка ошибки: ( «Ошибка домена = org.brautaset.JSON.ErrorDomain Code = 3 \« Неизвестный ведущий символ \ "UserInfo = 0x737cdf0 {NSLocalizedDescription = непризнанный главный символ}" ) Но json выглядит чистым. – LeXeR

+0

Вы проверили ваш url coorrect, и он получит данные с сервера, проверьте его. – Jitendra

+0

да, правильный URL. Эта ошибка отображается на моей консоли. – LeXeR

0

Просто попробуйте Либо

NSDictionary *dict = [str JSONValue]; 
NSLog(@"%@", dict); 

ИЛИ

NSError *error; 
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseCust options:nil error:&error]; 
NSLog(@"%@", dict); 
+0

пробовал все вышеперечисленные методы, ни один из них не работает. JSON также верен, проверил его на json.parser.online.fr ..... – LeXeR

+0

действительно странно, не могли бы вы вставить JSON на вопрос? – Emilio

1

Использование NSJSONSerialization и использовать

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error to convert JSON to foundation object. 

надеюсь, что это помогает

0
+(NSDictionary *)converJsonStringToDictionary:(NSString *)jsonString 
{ 
    NSString *stringToConvert = jsonString; 

    if (![self isObjectEmpty:stringToConvert]) { 

     NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 

     NSError *error = nil; 
     NSDictionary *convertedData = nil; 

     convertedData = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 

     if (error != nil){ 
      DLog(@"Error converting jsonString to dictionary: %@", [error description]); 
      convertedData = nil; 
     } 
     else if ([convertedData isKindOfClass:[NSDictionary class]]) { 
      DLog(@"The converted data is of kind NSDictionary"); 
     } 
     else if ([convertedData isKindOfClass:[NSArray class]]){ 
      DLog(@"The converted data is of kind NSArray"); 
      convertedData = nil; 
     } 
     else{ 
      DLog(@"The converted data is not NSDictionary/NSArray"); 
      convertedData = nil; 
     } 
     return convertedData; 
    } 
    else{ 
     DLog(@"The received jsonString is nil") 
     return nil; 
    } 
} 
0

Здесь, попробуйте добавить кодировку ...

NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:[jsonString dataUsingEncoding:NSUTF8StringEncoding] options:kNilOptions error:&error]; 

NSLog(@"dict: %@", jsonDict); 

Проверить здесь some samples on how to handle json on objective-c

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