2013-08-29 6 views
39

Ich versuche, Daten aus einer JSON-Datei zu analysieren. Ich versuche, diese analysierten/abgerufenen Daten in eine UIView mit einem Label oder in einer Webansicht zu bringen. Die JSON-Datei sieht in etwa wie folgt:Wie analysiere ich JSON aus einer Datei in iOS?

{"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> 
} 

Es gibt Beiträge hier auf Stack-Überlauf zeigen, wie JSON von einer Web-URL abgerufen zu analysieren, aber ich habe eigentlich schon eine JSON-Datei, die wir analysieren möchten. Wie analysiere ich JSON aus einer Datei?

+0

Gerade hat die json eine hTML-Datei eine Datei d lies es und zeigte es in der Webansicht an. Wenn jemand einen besseren Weg hat dies zu tun, bitte Kommentar und lass es mich wissen. – Chris

Antwort

110
  1. Erstellen Sie eine leere Textdatei (Neue Datei/Andere/Leer) z. "Example.json"

  2. Paste JSON-String in die Datei.

  3. diese Zeilen Verwenden Sie die Daten zu erhalten:

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

ich diese Schnipsel mehr als 100 Mal im letzten Monat – lucaslt89

+1

@ lucaslt89 Zeit Kopie klebte es einen Xcode-Schnipsel zu machen: http://nshipster.com/xcode-snippets/ – Kheldar

+0

oder vielleicht einige Helfer Klasse/Kategorie –

7

Ich habe dies gefolgt und es funktioniert gut

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; 
} 
17

Swift 2.0-Version der akzeptierte Antwort:

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 
     } 
    } 
Verwandte Themen