2

私がこの質問をすることができる最終的な間違いのために私を許してください.

このウェブサイトでいくつかのトピックを読んだ後、最初にこのトピックのように、describe メソッドを使用してみますが、それでもうまくいきません @ all :-(

私の .json ファイルは次のようになります

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

    }
  ]
}

これが私の推論です:

最初に、スピーカー属性を含む辞書があります。 これには、「名前」、「ビジネス」、...属性内のいくつかの辞書による配列フィールドが含まれています。 だから、これは私の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"]);
}

編集:スクリプトの正しい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 に答える