NSJSONSerialization不返回数据,但它在json查看器中显示数据

时间:2013-07-11 12:34:35

标签: iphone ios objective-c nsdata nsjsonserialization

当我尝试从服务器实现特定的api时,

NSJSONSerialization返回null,但是来自服务器的其他api工作正常,当我在web中尝试api它返回json类型的数据时,我检查了它在json viewer中,它工作正常,NSData也会返回一些数据,任何人都可以帮助我完成它吗?

NSString *urlString = @"url";        
NSURL *url = [NSURL URLWithString:urlString];
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfURL:url];
_dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];

if(error != nil){

    NSLog(@"JSON Error: %@", error);
    return;
}

我已经尝试过上面编写的代码。

2 个答案:

答案 0 :(得分:2)

问题在于您的网址中的转义序列,而您无法转义它们。你必须正确地逃避这些序列。

NSString *urlString = @"url";        
NSString *encodedString = [urlString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:encodedString];
  1. 查看Documentation
  2. 同时查看Escape Sequences
  3. 试试这个:

    NSString *urlString = @"url";        
    NSURL *myUrl = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    

答案 1 :(得分:1)

制作NSURLConnectionJSON NSURLRequest,因为我认为'json'不是具有内容的实际文件,因此您可以使用dataWithContentsOfURL: