[英]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直接映射到對象上。
我不確定發生了什么,但是很奇怪
所以我建議您可以逐步調試它
我想是數字是浮點數,請嘗試
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.