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). Пример здесь.

Ответ 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.