2

你能原谅我最终犯的错误吗?我可以问这个问题,这是我的第一个问题。

在阅读了这个网站上的几个主题之后,首先我会尝试使用 describe 方法,但它仍然不起作用@all :-(

我的 .json 文件看起来像这样

{ "speakers" : 
  [
    {
    "name":"Value",
    "picture": "URL VALUE",
    "business":"VALUE",
    "desc":"VALUE",
    "twitter": "URL VALUE"
    }                   
    {
           ...

    }
  ]
}

所以这是我的推理:

我首先有一个包含扬声器属性的字典 这个包含一个数组,由“名称”,“业务”,... attr中的一些字典组成。 所以,这是我的 obj-C 代码:


NSString *URLStr = @"URLofMyJsonFile";

NSURLRequest *JSONRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithString:URLStr ]]];

NSData *JSONData = [NSURLConnection sendSynchronousRequest:JSONRequest returningResponse:nil error:nil];

NSError *parsingError = nil;

NSDictionary *speakerDictionnary = [NSJSONSerialization JSONObjectWithData:JSONData options:0 error:&parsingError];

NSArray *speakersArray = [speakerDictionnary objectForKey:@"news"];

for (NSDictionary *oneSpeaker in speakersArray) {
    NSLog(@"The speakers's name is %@", [oneSpeaker objectForKey:@"name"]);
    NSLog(@"The speakers's business is %@", [oneSpeaker objectForKey:@"business"]);
    NSLog(@"The speakers's desc is %@", [oneSpeaker objectForKey:@"desc"]);
}

编辑:我用 Dummy 替换了我的脚本的正确 URL

4

2 回答 2

3

您的 JSON 无效,各个演讲者词典之间需要有逗号。

{ "speakers" : 
  [
    {
        "name":"Value",
        "picture": "URL VALUE",
        "business":"VALUE",
        "desc":"VALUE",
        "twitter": "URL VALUE"
    } <=== MISSING COMMA HERE       
    {
       ...
    }
  ]
}
于 2013-01-09T10:58:17.710 回答
0

正如 omz 提到的,json 是错误的。你可以试试下面的代码:

[NSURLConnection sendAsynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.appios.fr/client/takeoff/app/script/jsonSpeaker.json"]] queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *reponse,NSData *data,NSError *error){
        if (!error) {
            NSError *jsonError;
            id json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&jsonError];
            NSArray *speakersList = [json objectForKey:@"speakers"];
            [speakersList enumerateObjectsUsingBlock:^(NSDictionary *dict,NSUInteger idx,BOOL *Stop){
                NSLog(@"Name : %@",[dict objectForKey:@"name"]);
            }];
        }

    } ];
于 2013-01-09T11:03:46.617 回答