ios - 使用 AFNetworking 解析 JSON

标签 ios json afnetworking-2

我正在使用 AFNetworking 2 从服务器获取一些 json 数据。它是员工数据,我制作了一个员工对象和一个员工 NSMutableArray。

我的服务正在运行。如果我将 responseObject 输出到日志中,我会得到 600 名员工。我正在苦苦挣扎的是如何将它们放入我的员工 NSMutableArray。

responseObject 有一个 id 类型,意思是一个没有类的对象,对吧?我试图将 id 更改为 employee,因为这是我想要返回的,但没有用。然后我注意到 responseObject 实际上是所有对象,所以我尝试了 employees 但没有用。

所以我想我可以遍历对象,但由于它不是真正的 NSMutableArray 我不明白如何做。

如有任何帮助,我们将不胜感激。

布莱恩

- (IBAction)jsonTapped:(id)sender
{

    NSMutableArray *employees;
    employee *thisEmployee  = [employee new];

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    [manager.requestSerializer setAuthorizationHeaderFieldWithUsername:@"XXXXXX" password:@"XXXXXX"];

    AFHTTPRequestOperation *operation = [manager GET: @"https:/XXXXXXXXXXX/something"
                                          parameters: [self jsonDict]
                                             success:^(

                                                       AFHTTPRequestOperation *operation, id responseObject)
    {

                                                       NSLog(@"Submit response data: %@", responseObject);}
                                             failure:^(AFHTTPRequestOperation *operation, NSError *error){
                                               NSLog(@"Error: %@", error);}
                                                   ];
     [operation start];
}

这是我的成功集团内部:

   NSMutableArray  *employees = (NSMutableArray *)responseObject;

   NSLog(@"Count of array to begin: %lu", (unsigned long)[employees count]);
   NSLog(@"JSON RESULT %@", responseObject);

   FMDatabase *db = [FMDatabase databaseWithPath:[Utility getDatabasePath]];
                     [db open];
   for (employee *thisemployee in employees) {
   BOOL success =  [db executeUpdate:@"INSERT INTO employees (firstName,fullName,email) VALUES (?,?,?,?);",thisemployee.firstName,thisemployee.lastName,thisemployee.fullName,thisemployee.emailAddress, nil];
    if (success) {} // Only to remove success error
   NSLog(@"DDD %@", thisemployee);

最佳答案

您只需要在 success block 中获取 responseObject 并将其转换为数组,如下所示:

NSArray *employees = (NSArray *)responseObject;

AFNetworking 已经为您解析了 Json。您需要做的只是根据您的响应类型(可能是数组)转换为 NSArrayNSDictionary

关于ios - 使用 AFNetworking 解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20749663/

相关文章:

ios - 分段故障 Swift 2 App

ios - Swift 2 - 定期从 slider 打印新值

ios - BlueCap Kit BLE 在 iOS 中的实现

json - 编码到 json 时如何强制将 `[8]byte` 编码为十六进制

php - 使用 json_encode 函数时为空 json 字符串

ios - AF 网络 2.0 : Passing header information

ios - AFNetworking 与 session 管理 iOS

ios - Xamarin iOS 在运行时交换包中的图像

使用 Golang 对可选字段进行 JSON 模式验证

php - 无法使用 AFNetworking 2 和 Slim PHP 框架上传图像