Afnetworking 返回 null json 尽管它是有效的

Posted

技术标签:

【中文标题】Afnetworking 返回 null json 尽管它是有效的【英文标题】:Afnetworking return null json although its valid 【发布时间】:2015-03-06 20:11:04 【问题描述】:

我想使用 Afnetworking 解析 json,但它返回 null 尽管 json 有效并且在我的代码中运行良好

 -(void)getData:(NSString *)serverName

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    hud.mode = MBProgressHUDModeIndeterminate;
    hud.labelText = @"Loading";




    [manager POST:serverName parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) 





        [hud hide:YES];
        Category = [[NSMutableArray alloc]init];

        NSLog(@"%@",operation.responseString);

        // 3
        Category = [NSJSONSerialization JSONObjectWithData:responseObject options:kNilOptions error:nil];


        [self.myCollectionView reloadData];



     failure:^(AFHTTPRequestOperation *operation, NSError *error) 
        NSLog(@"error %@", error);
        [hud hide:YES];

        // 3


        UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"خطأ في الاتصال" message:@"توجد مشكلة في الاتصال قم بالمحاولة مرة اخرى" delegate:self cancelButtonTitle:@"اغلاق" otherButtonTitles:nil];
        [alert show];

    ];



但是当我在控制台上显示数组时它返回 null 虽然当我显示 operation.responseString 它输出真正的json

["cat_name":"الكترونيات","cat_img":"الكترونيات.jpg","cat_name":"arabiat","cat_img":"arabypic.jpg"]

responseObject 的输出是这样的

<efbbbf0d 0aefbbbf 5b7b2263 61745f6e 616d6522 3a22d8a7 d984d983 d8aad8b1 d988d986 d98ad8a7 d8aa222c 22636174 5f696d67 223a22d8 a7d984d9 83d8aad8 b1d988d9 86d98ad8 a7d8aa2e 6a706722 7d2c7b22 6361745f 6e616d65 223a2261 72616269 6174222c 22636174 5f696d67 223a2261 72616279 7069632e 6a706722 7d5d0a>

【问题讨论】:

调用成功块,还是失败?有什么错误吗? 成功块被调用,当我输出这个 NSLog(@"%@",operation.responseString);它输出 ["cat_name":"الكترونيات","cat_img":"الكترونيات.jpg","cat_name":"arabiat","cat_img":"arabypic.jpg"] 但是当我输出数组时为空 您已检查 operation.responseString 但您调用 JSONObjectWithData 以获得 responseObject。检查 responseObject(并将结果添加到您的帖子中)或将其替换为 operation.responseString。 【参考方案1】:

您应该将管理器响应序列化程序设置为 JSON,以便 AFN 自动解码数据。完成后,您不需要使用NSJSONSerialization,只需使用responseObject,这将是您的数组。

【讨论】:

operation.responseString返回真实JSON但responseObject回报 看起来像原始数据,因为您使用基本的序列化程序。询问 JSON 序列化程序错误是什么。

以上是关于Afnetworking 返回 null json 尽管它是有效的的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发过程中,遇到解析的json数据为<null>,进行赋值时会导致崩溃,使用AFNetworking可以这样解决。

AFNetworking 2.0 图片上传和 JSON 返回错误

AFNetworking/Overcoat/Promisekit - 在错误消息中获取返回 json

IOS/AFNetworking:将两个 JSON 操作排入队列,然后比较返回的 NSArrays

AFNetworking 返回一个 _NSCFData 对象而不是 JSON

我的返回数据表单 AFNetworking JSON 未正确显示