JSON IPHONE: Как отправить запрос JSON и вытянуть данные из сервера?

У меня в настоящее время есть 2 19-дюймовых монитора. Один я сохраняю в среде, и один я сохраняю в режиме портрета. Я нахожу, что работа над документацией или чтение длинных веб-страниц легче на экране портрета. Я использовал эту установку для кодирования также и нахожу, что это действительно помогает, однако это была изученная привычка. lol

5
задан Dejell 2 September 2012 в 16:35
поделиться

1 ответ

Платформа JSON поддерживает преобразование массивов, словарей, строк, чисел и логических значений. Итак, вы хотите преобразовать свои данные в один из этих форматов. Поскольку ваши данные являются NSData, проще всего преобразовать их с помощью:

NSString* stringData = [[NSString alloc] initWithData:yourData
                                             encoding:NSUTF8StringEncoding];

В зависимости от того, что находится в буфере (и если ваш сервер может это обработать), вы можете захотеть закодировать результат Base64 (проверьте http: // www. cocoadev.com/index.pl?BaseSixtyFour, если у вас нет под рукой конвертера). Вы даже можете перейти прямо от NSData к строке в кодировке Base64.

Теперь создайте словарь с одним элементом с ключом , кодом и значением stringData (с последнего шага):

NSDictionary* jsonDictionary = [NSDictionary dictionaryWithObject:stringData
                                                           forKey:@"code"];

] Его можно легко преобразовать в JSON. Просто импортируйте JSON.h в заголовок кода, затем используйте:

NSString* jsonString = [jsonDictionary JSONRepresentation];

Выгрузите его, и вы увидите свою строку JSON - что-то вроде: { "code" : "{yourstringdata}"; } . Самый простой способ отправить это на ваш сервер - использовать библиотеку ASIHTTPRequest с методом POST.

Как только вы получите результат с сервера, инфраструктура JSON может проанализировать его обратно в словарь, а затем вы можете получить нужные данные:

NSDictionary* responseDict = [yourJSONResponseStringFromServer JSONValue];
NSNumber* answerNum = (NSNumber *) [responseDict objectForKey:@"answer"];
int answer = [answerNum intValue];
17
ответ дан 18 December 2019 в 09:51
поделиться