Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:
empty-line/>

/* Сейчас попытаемся сериализовать объект JSON в словарь. */

error = nil;

id jsonObject = [NSJSONSerialization

JSONObjectWithData: jsonData

options: NSJSONReadingAllowFragments

error:&error];

if (jsonObject!= nil &&

error == nil){

NSLog(@"Successfully deserialized…");

if ([jsonObject isKindOfClass: [NSDictionary class]]){

NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject;

NSLog(@"Deserialized JSON Dictionary = %@", deserializedDictionary);

}

else if ([jsonObject isKindOfClass: [NSArray class]]){

NSArray *deserializedArray = (NSArray *)jsonObject;

NSLog(@"Deserialized JSON Array = %@", deserializedArray);

}

else {

/* Был возвращен какой-то другой объект. Мы не знаем,

что делать в этой ситуации, так как десериализатор

возвращает только словари или массивы. */

}

}

else if (error!= nil){

NSLog(@"An error happened while deserializing the JSON data.");

}

Если теперь объединить этот код с кодом из раздела 8.9, то можно будет сначала сериализовать словарь в объект JSON, десериализовать объект JSON обратно в словарь, а потом вывести результаты на консоль, чтобы убедиться, что все работает нормально:

— (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

NSDictionary *dictionary =

@{

@"First Name": @"Anthony",

@"Last Name": @"Robbins",

@"Age": @51,

@"Children": @[

@"Anthony's Son 1",

@"Anthony's Daughter 1",

@"Anthony's Son 2",

@"Anthony's Son 3",

@"Anthony's Daughter 2",

],

};

NSError *error = nil;

NSData *jsonData = [NSJSONSerialization

dataWithJSONObject: dictionary

options: NSJSONWritingPrettyPrinted

error:&error];

if ([jsonData length] > 0 &&

error == nil){

NSLog(@"Successfully serialized the dictionary into data.");

/* Сейчас попытаемся сериализовать объект JSON в словарь. */

error = nil;

id jsonObject = [NSJSONSerialization

JSONObjectWithData: jsonData

options: NSJSONReadingAllowFragments

error:&error];

if (jsonObject!= nil &&

error == nil){

NSLog(@"Successfully deserialized…");

if ([jsonObject isKindOfClass: [NSDictionary class]]){

NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject;

NSLog(@"Deserialized JSON Dictionary = %@", deserializedDictionary);

}

else if ([jsonObject isKindOfClass: [NSArray class]]){

NSArray *deserializedArray = (NSArray *)jsonObject;

NSLog(@"Deserialized JSON Array = %@", deserializedArray);

}

else {

/* Был возвращен какой-то другой объект. Мы не знаем, что делать

в этой ситуации, так как десериализатор возвращает только словари

или массивы. */

}

}

else if (error!= nil){

NSLog(@"An error happened while deserializing the JSON data.");

}

}

else if ([jsonData length] == 0 &&

error == nil){

NSLog(@"No data was returned after serialization.");

}

else if (error!= nil){

NSLog(@"An error happened = %@", error);

}

self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];

// Точка переопределения для дополнительной настройки после запуска приложения

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}

Параметр options метода JSONObjectWithData: options: error: принимает одно или несколько следующих значений:

• NSJSONReadingMutableContainers — словарь или массив, возвращенный методом JSONObjectWithData: options: error:, будет изменяемым. Иными словами, этот метод будет возвращать либо экземпляр NSMutableArray, либо экземпляр NSMutableDictionary в противоположность изменяемому массиву или словарю;

Поделиться:
Популярные книги

Последний Паладин. Том 7

Саваровский Роман
7. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 7

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Мастер 8

Чащин Валерий
8. Мастер
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Мастер 8

Тринадцатый VII

NikL
7. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VII

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Кодекс Охотника. Книга XXVI

Винокуров Юрий
26. Кодекс Охотника
Фантастика:
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXVI

Чужак из ниоткуда

Евтушенко Алексей Анатольевич
1. Чужак из ниоткуда
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чужак из ниоткуда

Кодекс Охотника. Книга XXXV

Винокуров Юрий
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV

Московское золото и нежная попа комсомолки. Часть Пятая

Хренов Алексей
5. Летчик Леха
Фантастика:
попаданцы
5.00
рейтинг книги
Московское золото и нежная попа комсомолки. Часть Пятая

Барону наплевать на правила

Ренгач Евгений
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Барону наплевать на правила

Уникум

Поселягин Владимир Геннадьевич
1. Уникум
Фантастика:
альтернативная история
4.60
рейтинг книги
Уникум

Второгодка. Книга 2. Око за око

Ромов Дмитрий
2. Второгодка
Фантастика:
героическая фантастика
альтернативная история
фэнтези
5.00
рейтинг книги
Второгодка. Книга 2. Око за око

По осколкам твоего сердца

Джейн Анна
2. Хулиган и новенькая
Любовные романы:
современные любовные романы
5.56
рейтинг книги
По осколкам твоего сердца

Хозяин Стужи 3

Петров Максим Николаевич
3. Злой Лед
Фантастика:
аниме
фэнтези
попаданцы
7.00
рейтинг книги
Хозяин Стужи 3