web-dev-qa-db-fra.com

Comment analyser JSON à partir d'un fichier dans iOS?

J'essaie d'analyser les données d'un fichier JSON. J'essaie de mettre ces données analysées/récupérées dans une UIView avec une étiquette ou dans une vue Web. Le fichier JSON ressemble à ceci:

{"bodytext": "<p>\n Some lines here about some webpage (&ldquo; <em>Site</>&rdquo;) some more lines here. \n </p>\n\n <p>\n some more stuff here </p>
}

Il y a des messages ici sur Stack Overflow montrant comment analyser JSON récupéré à partir d'une URL Web, mais j'ai en fait déjà un fichier JSON que je veux analyser. Comment analyser JSON à partir d'un fichier?

43
Chris
  1. Créez un fichier texte vide (Nouveau fichier/Autre/Vide), par ex. "example.json"

  2. Collez la chaîne json dans le fichier.

  3. Utilisez ces lignes pour obtenir les données:

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"example" ofType:@"json"];
    NSData *data = [NSData dataWithContentsOfFile:filePath];
    NSArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
    
122
ArturOlszak

Version Swift 2.0 de la réponse acceptée:

if let filePath = NSBundle.mainBundle().pathForResource("example", ofType: "json"), data = NSData(contentsOfFile: filePath) {
        do {
            let json = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.AllowFragments)
        }
        catch {
            //Handle error
        }
    }
18
Chris C

J'ai suivi ça et ça marche bien

NSError *error = nil;
 NSString *filePath = [[NSBundle mainBundle] pathForResource:@"messages" 
                                                      ofType:@"json"];
 NSData *dataFromFile = [NSData dataWithContentsOfFile:filePath];
 NSDictionary *data = [NSJSONSerialization JSONObjectWithData:dataFromFile
                                                      options:kNilOptions
                                                        error:&error];
 if (error != nil) {
  NSLog(@"Error: was not able to load messages.");
  return nil;
 }
7
wassay khan