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

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

Жанры

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 в противоположность изменяемому массиву или словарю;

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

Газлайтер. Том 21

Володин Григорий Григорьевич
21. История Телепата
Фантастика:
боевая фантастика
аниме
попаданцы
5.00
рейтинг книги
Газлайтер. Том 21

Контрольный поцелуй

Донцова Дарья
8. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
9.15
рейтинг книги
Контрольный поцелуй

Аспирант

Поселягин Владимир Геннадьевич
3. Рунный маг
Фантастика:
боевая фантастика
4.50
рейтинг книги
Аспирант

Почем цветочек аленький?

Луганцева Татьяна Игоревна
Женщина-цунами
Детективы:
иронические детективы
7.88
рейтинг книги
Почем цветочек аленький?

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

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

Возлюби болезнь свою

Синельников Валерий Владимирович
Научно-образовательная:
психология
7.71
рейтинг книги
Возлюби болезнь свою

Завещание

Гришэм Джон
Детективы:
триллеры
7.00
рейтинг книги
Завещание

Эволюционер из трущоб. Том 8

Панарин Антон
8. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 8

Солдат Империи

Земляной Андрей Борисович
1. Страж
Фантастика:
попаданцы
альтернативная история
6.67
рейтинг книги
Солдат Империи

Хроники Тириса. Книга 3

Маханенко Василий Михайлович
3. Хроники Тириса
Фантастика:
боевая фантастика
космическая фантастика
фантастика: прочее
5.00
рейтинг книги
Хроники Тириса. Книга 3

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

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

Эйзенштейн

Шкловский Виктор Борисович
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Эйзенштейн

Поход

Валериев Игорь
4. Ермак
Фантастика:
боевая фантастика
альтернативная история
6.25
рейтинг книги
Поход

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.00
рейтинг книги
Князь Андер Арес 3