2013-08-29 10 views
39

Próbuję parsować dane z pliku JSON. Próbuję umieścić te sparsowane/pobrane dane w UIView z etykietą lub w widoku webowym. Plik JSON wygląda mniej więcej tak:Jak przeanalizować plik JSON z pliku w systemie 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> 
} 

Istnieje stanowisk tutaj na przepełnienie stosu pokazujące jak analizować JSON pobierane z zawartości sieci Web, ale faktycznie już plik JSON chcę analizować. Jak parsować JSON z pliku?

+0

Właśnie utworzyłem plik json w pliku html d przeczytać i wyświetlić go w widoku sieci. Jeśli ktoś ma lepszy sposób na zrobienie tego, prosimy o komentarz i daj mi znać. – Chris

Odpowiedz

110
  1. Utwórz pusty plik tekstowy (Nowy plik/Inne/Pusty) np. "example.json"

  2. Wklej ciąg znaków json do pliku.

  3. pomocą tych linii, aby uzyskać dane:

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

Skopiowałem ten fragment więcej niż 100 razy w ostatnim miesiącu – lucaslt89

+1

@ lucaslt89 czas, aby zrobić fragment Xcode: http://nshipster.com/xcode-snippets/ – Kheldar

+0

lub może trochę klasy/kategorii pomocnika –

7

Śledzę to i to działa dobrze

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 wersję przyjętą odpowiedź:

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 
     } 
    } 
Powiązane problemy