AFNetworking и jSON
Я получаю ответ json от веб-сервиса api. Я хочу извлечь данные о продукте из json. Я также хочу реализовать это, используя AFNetworking.
{"products": [
{
"product_id": "1170",
"name": "zzzz®",
"sort_order": 0,
"brand": "zzzas",
"product_category_id": "1090",
"location_ids": [
"1078"
],
"icon_url": "http://zzzzz.com/media/2502/zzzz.png",
"icon_date": "Wed, 07 Nov 2012 14:03:47 GMT",
"thumbnail_url": "http://zzzz.com/media/2591/zzdfs.png",
"thumbnail_date": "Wed, 07 Nov 2012 14:04:02 GMT"
},
{
"product_id": "1126",
"name": "ddddd®",
"sort_order": 1,
"brand": "dddsas",
"product_category_id": "1110",
"location_ids": [
"1095"
],
"icon_url": "http://zzzzz.com/media/2507/ddddd.png",
"icon_date": "Wed, 07 Nov 2012 14:03:48 GMT",
"thumbnail_url": "http://zzzzz.com/media/2596/sssds.png",
"thumbnail_date": "Wed, 07 Nov 2012 14:04:05 GMT"
}
]}
Может ли кто-нибудь предложить способ сделать это .
мне, как все будет сделано.
Ответы
Ответ 1
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"link"]];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSDictionary *jsonDict = (NSDictionary *) JSON;
NSArray *products = [jsonDict objectForKey:@"products"];
[products enumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop){
NSString *productIconUrl = [obj objectForKey:@"icon_url"];
}];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response,
NSError *error, id JSON) {
NSLog(@"Request Failure Because %@",[error userInfo]);
}
];
[operation start];
Попробуйте это.
Обновление 1: вы можете попробовать https://github.com/SSamanta/SSRestClient
Обновление 2: https://github.com/SSamanta/SSHTTPClient (с помощью Swift)
Доступный под: pod 'SSHTTPClient', '~>1.2.2'
Ответ 2
если вы используете AFNetworking 3.0, AFJSONRequestOperation
больше не существует, вы должны использовать AFHTTPSessionManager
:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
Ответ 3
Чтобы разобрать JSON с AFNetworking, просто создайте подкласс и добавьте следующее во время инициализации.
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
Тогда вызов метода, подобного GET:parameters:completion:
, вызовет блок завершения с NSDictionary
как параметр response
(при условии, что JSON действителен).
Чтобы загрузить изображения, если вы хотите их отобразить, посмотрите UIImageView+AFNetworking.
Ответ 4
Если вы только начинаете, я рекомендую использовать RestKit для этой задачи (используется AFNetworking). Пример здесь.
Ответ 5
Пожалуйста, проверьте пример AFNetworking
https://github.com/AFNetworking/AFNetworking/tree/master/Example
Для загрузки изображений EGOCache и EGOImageLoading могут быть хорошим выбором
https://github.com/enormego/EGOImageLoading
Ответ 6
Используйте JSONModel, чтобы проанализировать json в объекте.
Ответ 7
Во-первых, для запуска AFNetworking вам сначала нужно будет установить "CocoaPods". Что это?
CocoaPods является менеджером зависимостей для Objective-C, что делает установку сторонних библиотек
поскольку AFNetworking намного быстрее и безопаснее. Он предоставляется как Ruby Gem, который вы можете установить следующим образом:
Откройте терминал и выполните следующие команды:
sudo gem install cocoapods -V
Будьте терпеливы. Эта команда может занять некоторое время, поэтому опция "-V" предоставит вам подробные данные о том, что происходит.
Далее выполняем:
pod setup
Какая настройка нашей установки CocoaPods.
Теперь нам нужно создать PodFile, который будет являться нашим конфигурационным файлом для CocoaPods.
Вернитесь к терминалу и напишите следующие команды:
touch Podfile
open -e Podfile
Первая команда создаст файл под названием "Подфайл" с помощью редактора сенсорных Unix. Вторая строка откроет этот вновь созданный файл для редактирования.
К настоящему времени вы должны увидеть пустое окно TextEdit. Теперь мы вставим следующее внутри этого файла:
platform :ios, '7.0'
pod "AFNetworking", "~> 2.0"
Теперь пришло время настроить нашу рабочую среду Cocoa.
ВАЖНО: Пожалуйста, не забудьте изменить свой каталог с вашим терминалом в вашем XCODE PROJECTS CURRENT DIRECTORY, используя команду "cd" в терминале.
Пример:
cd /user/xcode/myproject
Как только вы убедитесь, что находитесь в соответствующем каталоге, выполните следующую команду терминала:
pod setup
И затем мы устанавливаем зависимости к нашему проекту, записывая:
pod install
Теперь это важное замечание:
Поскольку вы пытаетесь установить проект, который ранее не был в вашем текущем проекте Xcode, вам нужно создать рабочую область для вашего текущего проекта Xcode (если вы еще этого не сделали).
Чтобы создать рабочую область для вашего проекта Xcode, выполните следующие действия:
File > Save Workspace
Как только вы закончите, перейдите в каталог вашего рабочего файла Xcode и выполните следующую команду:
open YourProjectName.xcworkspace
Теперь вы можете просто использовать "импорт" в начале любого из ваших файлов для доступа к встроенным функциям API AFNetworking.