How to use NSJSONSerialization

后端 未结 12 788
天涯浪人
天涯浪人 2020-11-22 08:38

I have a JSON string (from PHP\'s json_encode() that looks like this:

[{\"id\": \"1\", \"name\":\"Aaa\"}, {\"id\": \"2\", \"name\":\"Bbb\"}]
         


        
12条回答
  •  感动是毒
    2020-11-22 09:14

    #import "homeViewController.h"
    #import "detailViewController.h"
    
    @interface homeViewController ()
    
    @end
    
    @implementation homeViewController
    
    - (id)initWithStyle:(UITableViewStyle)style
    {
        self = [super initWithStyle:style];
        if (self) {
            // Custom initialization
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        self.tableView.frame = CGRectMake(0, 20, 320, 548);
        self.title=@"Jason Assignment";
    
        // Uncomment the following line to preserve selection between presentations.
        // self.clearsSelectionOnViewWillAppear = NO;
    
        // Uncomment the following line to display an Edit button in the navigation bar for this view controller.
        // self.navigationItem.rightBarButtonItem = self.editButtonItem;
        [self clientServerCommunication];
    }
    
    -(void)clientServerCommunication
    {
        NSURL *url = [NSURL URLWithString:@"http://182.72.122.106/iphonetest/getTheData.php"];
        NSURLRequest *req = [NSURLRequest requestWithURL:url];
        NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:req delegate:self];
        if (connection)
        {
            webData = [[NSMutableData alloc]init];
        }
    }
    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
    {
        [webData setLength:0];
    }
    
    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    {
        [webData appendData:data];
    }
    
    - (void)connectionDidFinishLoading:(NSURLConnection *)connection
    {
        NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:webData options:0 error:nil];
    
        /*Third party API
         NSString *respStr = [[NSString alloc]initWithData:webData encoding:NSUTF8StringEncoding];
         SBJsonParser *objSBJson = [[SBJsonParser alloc]init];
         NSDictionary *responseDict = [objSBJson objectWithString:respStr]; */
        resultArray = [[NSArray alloc]initWithArray:[responseDict valueForKey:@"result"]];
        NSLog(@"resultArray: %@",resultArray);
        [self.tableView reloadData];
    }
    
    
    - (void)didReceiveMemoryWarning
    {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    #pragma mark - Table view data source
    
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
    //#warning Potentially incomplete method implementation.
        // Return the number of sections.
        return 1;
    }
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
    //#warning Incomplete method implementation.
        // Return the number of rows in the section.
        return [resultArray count];
    }
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *CellIdentifier = @"Cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        }
    
        // Configure the cell...
        cell.textLabel.text = [[resultArray objectAtIndex:indexPath.row] valueForKey:@"name"];
        cell.detailTextLabel.text = [[resultArray objectAtIndex:indexPath.row] valueForKey:@"designation"];
    
        NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:[[resultArray objectAtIndex:indexPath.row] valueForKey:@"image"]]];
    cell.imageview.image = [UIImage imageWithData:imageData];
    
        return cell;
    }
    
    /*
    // Override to support conditional editing of the table view.
    - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // Return NO if you do not want the specified item to be editable.
        return YES;
    }
    */
    
    /*
    // Override to support editing the table view.
    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (editingStyle == UITableViewCellEditingStyleDelete) {
            // Delete the row from the data source
            [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
        }   
        else if (editingStyle == UITableViewCellEditingStyleInsert) {
            // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
        }   
    }
    */
    
    /*
    // Override to support rearranging the table view.
    - (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath
    {
    }
    */
    
    /*
    // Override to support conditional rearranging of the table view.
    - (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // Return NO if you do not want the item to be re-orderable.
        return YES;
    }
    */
    
    
    #pragma mark - Table view delegate
    
    // In a xib-based application, navigation from a table can be handled in -tableView:didSelectRowAtIndexPath:
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // Navigation logic may go here, for example:
         //Create the next view controller.
        detailViewController *detailViewController1 = [[detailViewController alloc]initWithNibName:@"detailViewController" bundle:nil];
    
     //detailViewController *detailViewController = [[detailViewController alloc] initWithNibName:@"detailViewController" bundle:nil];
    
     // Pass the selected object to the new view controller.
    
     // Push the view controller.
     detailViewController1.nextDict = [[NSDictionary alloc]initWithDictionary:[resultArray objectAtIndex:indexPath.row]];
     [self.navigationController pushViewController:detailViewController1 animated:YES];
    
        // Pass the selected object to the new view controller.
    
        // Push the view controller.
      //  [self.navigationController pushViewController:detailViewController animated:YES];
    }
    
    
    
    @end
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view from its nib.
        empName.text=[nextDict valueForKey:@"name"];
        deptlbl.text=[nextDict valueForKey:@"department"];
        designationLbl.text=[nextDict valueForKey:@"designation"];
        idLbl.text=[nextDict valueForKey:@"id"];
        salaryLbl.text=[nextDict valueForKey:@"salary"];
        NSString *ImageURL = [nextDict valueForKey:@"image"];
        NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:ImageURL]];
        image.image = [UIImage imageWithData:imageData];
    }
    

提交回复
热议问题