簡體   English   中英

無法解析對nsdictionary的afnetworking json響應

[英]Cant parse afnetworking json response to nsdictionary

我正在嘗試使用以下afnetworking請求代碼調用外部API:

AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                        destination, @"destination",
                        nil];

[manager POST:baseUrl parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        completion(nil, responseObject);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    completion(error, nil);
    NSLog(@"error: %@", error);
}];

當我打印出responseObject時,得到以下內容,這是我希望看到的json:

在此處輸入圖片說明

但是,當我嘗試訪問代碼時,例如responseObject [@“ code”],我得到一些奇怪的文本:

(__NSCFNumber *) $0 = 0xb00000000000fa33 (long)4003

然后,我嘗試使用NSStringwithformat%ld對此進行解析,但是返回:

 (__NSCFString *) $1 = 0x000060800005a850 @"-5764607523034170829"

不知道這里發生了什么,responseObject是否已被正確解析為NSDictionary

任何幫助,將不勝感激

我不確定這里發生了什么,但是我建議使用Gloss框架進行JSON序列化/反序列化,以將JSON直接映射到對象上。

http://harlankellaway.com/Gloss/

我不確定發生了什么,但是很奇怪

所以我建議您可以逐步調試它

我想是數字是浮點數,請嘗試

NSNumber *num = [responseObject objectForKey:@"code"];
int theValue = [num intValue];

這可能會有所幫助。

所以您要做的就是在您的成功塊內,

NSDictionary *result = (NSDictionary *)responseObject;

for(NSDictionary *all in result){
   int code = [all objectForKey:@"code"];
}

希望這對您有幫助。

注意:最好使用model並將這些對象添加到mutable array

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM