Ios AFGET请求-无法将responseObject转换为NSDictionary
我已尝试将Ios AFGET请求-无法将responseObject转换为NSDictionary,ios,objective-c,afnetworking-2,Ios,Objective C,Afnetworking 2,我已尝试将responseSerializer设置为JSON,但无法将responseObject转换为NSDictionary。问题是我得到的响应是NSData NSString *baseURLString = @"Your URL?"; NSString *str = @"adult=false&gender=male"; NSString *url = [NSString stringWithFormat:@"%@%@",baseURLString,st
responseSerializer
设置为JSON
,但无法将responseObject转换为NSDictionary
。问题是我得到的响应是NSData
NSString *baseURLString = @"Your URL?";
NSString *str = @"adult=false&gender=male";
NSString *url = [NSString stringWithFormat:@"%@%@",baseURLString,str];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
// do whatever you'd like here; for example, if you want to convert
// it to a string and log it, you might do something like:
NSLog(@"responseObject %@",responseObject);
NSString *jsonString = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"%@", jsonString);
NSError* error;
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:responseObject
options:NSJSONReadingMutableContainers
error:&error];
NSLog(@"json %@",json);
if (error) {
NSLog(@"%@",[error description]);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
此NSLog(@“%@,[错误描述])代码>给出如下错误:
Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed.
(Cocoa error 3840.)" (Garbage at end.)
UserInfo=0xa7c5440 {NSDebugDescription=Garbage at end.}
您的数据不是有效的JSON,您可以在此提供url或复制粘贴JSON数据并命中进程,您将看到它不是有效的JSON
无效的原因是它包含此页面是在0.0048439502716064秒内创建的
此消息在其响应结束时。如果您在服务器端拥有控制权,请尝试在最后停止发送此行,或尝试删除此行并将其转换为NSDictionary。希望这有帮助:) 您的数据不是有效的JSON。您可以在这里签入,提供url或复制粘贴JSON数据,然后点击过程,您将看到它不是有效的JSON
无效的原因是它包含此页面是在0.0048439502716064秒内创建的
此消息在其响应结束时。如果您在服务器端拥有控制权,请尝试在最后停止发送此行,或尝试删除此行并将其转换为NSDictionary。希望这有帮助:) 您的JSON将以垃圾结尾返回
您应该修复Web服务,使其不在JSON末尾嵌入时间戳和语言。如果您不能更改您的Web服务,那么在再次使用NSJSONSerialization
解析json之前,请使用以下命令从json中删除尾部垃圾
NSRange range = [jsonString rangeOfString:@"}" options:NSBackwardsSearch];
jsonString = [jsonString substringToIndex:range.location + 1];
然后将清理后的jsonString
解析为NSDictionary
:
NSData *newJSONData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:newJSONData
options:NSJSONReadingMutableContainers
error:&error];
NSLog(@"json %@",json);
它应该可以正常工作。您的JSON最终会返回垃圾
您应该修复Web服务,使其不在JSON末尾嵌入时间戳和语言。如果您不能更改您的Web服务,那么在再次使用NSJSONSerialization
解析json之前,请使用以下命令从json中删除尾部垃圾
NSRange range = [jsonString rangeOfString:@"}" options:NSBackwardsSearch];
jsonString = [jsonString substringToIndex:range.location + 1];
然后将清理后的jsonString
解析为NSDictionary
:
NSData *newJSONData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary* json = [NSJSONSerialization
JSONObjectWithData:newJSONData
options:NSJSONReadingMutableContainers
error:&error];
NSLog(@"json %@",json);
它应该可以正常工作。但是您从请求中检索的响应对象是什么格式?@MrBr-其NSData我可以将其转换为字符串-jsonStringIt可能不是有效的JSON那么,您可以使用NSJSONSerialization
来解析JSON字符串吗?@YasKuraishi-其不是有效的JSON,我已在您的浏览器中使用NSJSONSerializationRun Url更新了我的问题,但您从请求中检索的响应对象的格式是什么?@MrBr-其NSData我可以将其转换为字符串-那么jsonStringIt可能不是有效的JSON,你能用NSJSONSerialization
解析json字符串吗?@YasKuraishi-这不是有效的json,我已经在你的浏览器中用NSJSONSerializationRun Url更新了我的问题