¿Cómo puedo analizar mi archivo JSON almacenados en la aplicación?

Estos son, en mi archivo JSON contenido:

[{"number":"01001","lieu":"paris"}{"number":"01002","lieu":"Dresden"}]

He probado el código siguiente:

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"json"];

//création d'un string avec le contenu du JSON
NSString *myJSON = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];   

//Parsage du JSON à l'aide du framework importé
NSDictionary *json    = [myJSON JSONValue];

NSArray *statuses    =  [json objectForKey:@"number"];

for (NSDictionary *status in statuses)
{
    NSLog(@"%@ ", [status objectForKey:@"lieu"]);
}
InformationsquelleAutor cs1.6 | 2011-08-15

2 Comentarios

  1. 25

    En primer lugar, tenga en cuenta que hay una coma que falta entre los dos objetos en su cadena JSON.

    En segundo lugar, tenga en cuenta que su cadena JSON que contiene una matriz de nivel superior. Así, en lugar de:

    NSDictionary *json = [myJSON JSONValue];

    uso:

    NSArray *statuses = [myJSON JSONValue];

    Cada elemento de la matriz es un objeto (como un diccionario) con dos pares de nombre-valor (key-objeto de pares), uno para number y otro para lieu:

    for (NSDictionary *status in statuses) {
        NSString *number = [status objectForKey:@"number"];
        NSString *lieu = [status objectForKey:@"lieu"];
    
        
    }

    También puede ser que desee comprobar si el archivo se puede leer

    //Creating a string with the contents of JSON
    NSString *myJSON = [[NSString alloc] initWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:NULL];
    if (!myJSON) {
        NSLog(@"File couldn't be read!");
        return;
    }
    • respuesta agradable thx mi amigo
    • Entonces usted podría marcar esto como aceptado respuesta
  2. 2

    Aquí es una propuesta de implementación completa:

    NSString *jsonFilePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"json"];
    if (!jsonFilePath) {
        //... do something ...
    }
    
    NSError *error = nil;
    NSInputStream *inputStream = [[NSInputStream alloc] initWithFileAtPath:jsonFilePath];
    [inputStream open];
    id jsonObject = [NSJSONSerialization JSONObjectWithStream: inputStream
                                                            options:kNilOptions
                                                              error:&error];
    [inputStream close];
    if (error) {
        //... do something ...
    }

Dejar respuesta

Please enter your comment!
Please enter your name here