0

我正在尝试解析托管在我的 Google Drive 上的 json 文件。我正在使用以下代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.


    NSURL* url = [NSURL URLWithString:@"https://docs.google.com/file/d/0B3CRs9y562F3a0VXTXNaekNiSXM/edit?usp=sharing"];

    NSURLRequest* request = [NSURLRequest requestWithURL:url];

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
        if (!error) {
            NSDictionary* jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
            NSLog(@"jsonDictionary \n%@", jsonDictionary);
        }
    }];


}

我检查了网址,发现它要么是代码,要么是无法从 Google Drive 访问。如果代码不好,我看不到它在哪里。如果无法从 Google Drive 解析 .json 文件,我可以在哪里托管可以访问此内容的权限?它必须在我自己的域上吗?我在 Google Code 上进行了托管,但绝对不像我需要的版本控制,等等。

4

2 回答 2

1
your json file format is not proper. Try this code you will get error what is wrong in 
 your json File

NSURL* url = [NSURL URLWithString:@"https://docs.google.com/file/d/0B3CRs9y562F3a0VXTXNaekNiSXM/edit?usp=sharing"];

    NSURLRequest* request = [NSURLRequest requestWithURL:url];

    NSData *response = [NSURLConnection sendSynchronousRequest:request
                                             returningResponse:nil error:nil];
    NSError *jsonParsingError = nil;
    NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:response
                                                              options:0 error:&jsonParsingError];
    if (!jsonArray) {
                        NSLog(@"Error parsing JSON: %@", [jsonParsingError description]);
                    } else {
                        for(NSDictionary *item in jsonArray) {
                            NSLog(@"Item: %@", item);
                        }
                    }
于 2013-06-29T06:45:55.893 回答
1

当我加载该网址时,我并没有真正得到任何东西。另一种选择可能是将文档放在 node.js api 后面并从那里进行休息调用,或者将其支持 AWS S3 并从那里进行调用。除了首先下载所有文本之外,我认为谷歌驱动器不允许就地解析。我认为将其托管在带有 api 的 heroku 之类的服务上将为您提供最好的服务。

于 2013-06-29T04:42:12.987 回答