Подтвердить что ты не робот

Как преобразовать сериализованные данные JSON в NSDictionary

Я использовал этот метод,

NSDictionary *jsonObject=[NSJSONSerialization 
       JSONObjectWithData:jsonData 
                  options:NSJSONReadingMutableLeaves 
                    error:nil];
NSLog(@"jsonObject is %@",jsonObject);

Он печатает "jsonObject равно null".
Есть ли проблема с "error: no".
Я не использую URL-адрес или методы подключения. У меня есть json файл, и я хочу отобразить его в таблице.

4b9b3361

Ответ 1

Пожалуйста, используйте следующий код.

NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData
                                                     options:kNilOptions 
                                                       error:&error];

NSArray* latestLoans = [json objectForKey:@"loans"];

NSLog(@"loans: %@", latestLoans);

Ответ 2

На всякий случай кто-то здесь, чтобы увидеть быстрый код:

NSData для NSDictionary

let dictionary:NSDictionary = NSKeyedUnarchiver.unarchiveObjectWithData(jsonData)! as NSDictionary

NSData для NSString

let resstr = NSString(data: res, encoding: NSUTF8StringEncoding)

Ответ 3

Проверьте свой json-вход, может быть, ваш корневой элемент не является ни словарем, ни массивом? В документации указано, что в этом случае вы должны указать NSJSONReadingAllowFragments.

#import <Foundation/Foundation.h>

int main(int argc, char *argv[]) {
    NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];

    NSData *jsonData = [@"{ \"key1\": \"value1\" }" dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *jsonObject=[NSJSONSerialization 
           JSONObjectWithData:jsonData 
                      options:NSJSONReadingMutableLeaves 
                        error:nil];
    NSLog(@"jsonObject is %@",jsonObject);

    [p release];
}

Вывод:

2012-09-26 16:06:51.610 Untitled[19164:707] jsonObject is {
    key1 = value1;
}

Ответ 4

NSError* error;
NSDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

Это всего лишь более краткий вариант топ-сообщения.

Ответ 5

Отметьте эту ссылку Я уверен, что это поможет вам. но это будет работать только и выше ios 5. убедитесь, что вы используете ios 5 или выше.