AFNetworking和JSON(AFNetworking and jSON)

2019-07-04 00:35发布

我得到以下从Web服务API的JSON响应。 我想从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"
    }
]}

任何人都可以提出一个方法来做到这一点. 我该怎么事情就搞定。

Answer 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'



Answer 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);
}];


Answer 3:

与AFNetworking解析JSON,只需要创建一个子类,并初始化过程中添加以下。

[self registerHTTPOperationClass:[AFJSONRequestOperation class]];

然后调用的方法等GET:parameters:completion:将调用完成块用NSDictionary作为response参数(假设JSON是有效的)。

要下载图片,假设你想显示他们,检查出的UIImageView + AFNetworking 。



Answer 4:

如果你是刚刚开始,我会建议使用RestKit这项任务(它利用AFNetworking的)。 见一个例子在这里 。



Answer 5:

请检查AFNetworking的例子https://github.com/AFNetworking/AFNetworking/tree/master/Example

对于图像下载,EGOCache&EGOImageLoading可能是一个不错的选择https://github.com/enormego/EGOImageLoading



Answer 6:

使用JSONModel解析成JSON对象。



Answer 7:

首先,为了运行AFNetworking你首先需要安装“的CocoaPods”。 这是什么? 的CocoaPods是针对这使得作为AFNetworking多安装第三方库的更多更快,安全的Objective-C的依赖性经理。 它提供了一个Ruby的宝石,你可以安装方式如下:

打通终端,并执行以下命令:

sudo gem install cocoapods -V

耐心点。 该命令可能需要一些时间来完成,所以“-V”选项将为您提供什么事情的详细数据。

接下来,我们执行:

pod setup

其中规定了我们的CocoaPods安装。

现在,我们必须建立一个PodFile这将服务器作为我们的CocoaPods配置文件。

回到终端,我们编写以下命令:

touch Podfile
open -e Podfile

第一个命令将创建一个名为“Podfile”与Unix的触摸编辑文件。 第二行会打开这个新创建的文件进行编辑。 现在,你应该看到一个空的文本编辑窗口中打开。 现在我们粘贴此文件中的以下内容:

platform :ios, '7.0'
pod "AFNetworking", "~> 2.0"

现在是时候建立我们的可可工作环境。 重要提示:请确保你的终端在Xcode项目的当前目录在终端中使用“CD”命令更改目录。 例:

cd /user/xcode/myproject

一旦你确定你是在正确的目录执行以下命令终端:

pod setup

然后我们通过书面形式安装依赖于我们的项目:

pod install

现在,这是一个重要的注意事项:既然你要安装一个项目,这是以前没有当前的Xcode项目内,你必须为你的当前Xcode项目工作区创建工作区(如果你还没有这样做了。)为您的Xcode项目做到以下几点:

File > Save Workspace

一旦你完成,浏览到您的Xcode工作区文件的目录,然后执行以下命令:

open YourProjectName.xcworkspace

现在,你可以用“导入”在任何文件的开头访问AFNetworking的内置API的功能。



文章来源: AFNetworking and jSON