Разобрать JSON из AFNetworking для отображения в UITableView

Я недавно использую AFNetworking получить JSON и разобрать его, я импортировал его в свой проект и получил JSON но я не знаю, как можно разобрать JSON для отображения, особенно в Objective-C.

Вот код в моем viewDidLoad получить JSON:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://api.androidhive.info/json/movies.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

Восстановленный JSON для разбора:

  {
        genre =         (
            Action,
            Drama,
            "Sci-Fi"
        );
        image = "http://api.androidhive.info/json/movies/1.jpg";
        rating = "8.300000000000001";
        releaseYear = 2014;
        title = "Dawn of the Planet of the Apes";
    },
        {
        genre =         (
            Action,
            "Sci-Fi",
            Thriller
        );
        image = "http://api.androidhive.info/json/movies/4.jpg";
        rating = "8.4";
        releaseYear = 2014;
        title = "X-Men: Days of Future Past";
    },
        {
        genre =         (
            Action,
            Adventure,
            Fantasy
        );
        image = "http://api.androidhive.info/json/movies/7.jpg";
        rating = "7.3";
        releaseYear = 2014;
        title = "The Amazing Spider-Man 2";
    },
        {
        genre =         (
            Animation,
            Comedy,
            Family
        );
        image = "http://api.androidhive.info/json/movies/9.jpg";
        rating = "8.300000000000001";
        releaseYear = 2013;
        title = Rush;
    },
        {
        genre =         (
            Animation,
            Adventure,
            Family
        );
        image = "http://api.androidhive.info/json/movies/15.jpg";

        rating = "8.199999999999999";
        releaseYear = 2010;
        title = "How to Train Your Dragon";
    }
)

Обновить:

Как можно отобразить и сохранить полученные данные, чтобы их было легче отобразить в UITableView, я пытался сделать как:

NSLog(@"JSON: %@", [responseObject objectForKey:@"image"]);

чтобы получить только целые изображения, но он падает. мне просто нужно получить, например, все заголовки и сохранить их в массиве, а затем отобразить их UITableView,

2 ответа

Решение

Вы пытаетесь таким образом получить данные от NSDictionary

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager GET:@"http://api.androidhive.info/json/movies.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
    self.arrData=[[NSMutableArray alloc]initWithArray:responseObject];
    [self.tableView reloadData];// reload table data
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

Метод делегирования TableView

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
       // your cell code here
      // indexPath.row(use in tableView) means your number of index to get value
    NSLog(@"JSON: %@", [[self.arrData objectAtIndex:indexPath.row] objectForKey:@"image"]);
    NSLog(@"title: %@", [[self.arrData objectAtIndex:indexPath.row] objectForKey:@"title"]);
    NSLog(@"rating: %@", [[self.arrData objectAtIndex:indexPath.row] objectForKey:@"rating"]);
   NSLog(@"releaseYear: %@", [[self.arrData objectAtIndex:indexPath.row] objectForKey:@"releaseYear"]);
   NSLog(@"genre: %@", [[self.arrData objectAtIndex:indexPath.row] objectForKey:@"genre"]);// return array get value particular using array index 
}

AFNetworking возвращает уже обработано JSON в responseObject - а в вашем случае это NSArray NSDictionary объектов внутри него.

Для доступа к одному NSDictionary создайте свойство NSArray (например, resultArray) и установите его responseObject, тогда вы можете получить доступ к его объектам resultArray[1] (не забудьте проверить отказов).

Затем вы можете получить доступ к значениям dictionary по их ключам (myDictionary[@"title] и так далее).

Другие вопросы по тегам