Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AFGET请求-无法将responseObject转换为NSDictionary_Ios_Objective C_Afnetworking 2 - Fatal编程技术网

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更新了我的问题