JSON in iPhone


JSON stands for JavaScript Object Notation. It is a lightweight data-interchange format. It is easy for humans to read and write. JSON is a data format that is completely language independent. It is a collection of name/value pairs and an ordered list of values.

In this article I will create a Single view application and I will use a table view from outlet to connect it's delegate or datasource to the file owner. Here I use an API loan service and fetch a "name" entity and show it in the table.

To understand it we use the following.

Step 1

Open XCode by double-clicking on it. 

Step 2

Create a New XCode Project by clicking on it.

Step 3

Now Select Single View Application and click on Next. 

Step 4

Now provide your Product Name.

Step 5

Select the location where you want to save your project and click on Create. 

Step 6

Now we write the code.



// CirclesViewController.h

// jsonTest


// Created by Sachin Bhardwaj on 12/12/12.

// Copyright (c) 2012 Sachin Bhardwaj. All rights reserved.


#import <UIKit/UIKit.h>

@interface CirclesViewController : UIViewController{

NSMutableArray *m_userprofiledatarray;

NSURL *_feedurl;

NSMutableData *responseData;

NSHTTPURLResponse* httpResponse ;

NSString *responseString;

int responseCode;

NSMutableArray * name;

NSMutableArray * activity;

IBOutlet UITableView *table;


@property(strong,nonatomic)IBOutlet UITableView *table;

@property (nonatomic, assign) BOOL islistDisplay;

@property(nonatomic,copy) NSMutableArray * name;

@property(nonatomic,copy) NSMutableArray * activity;




// CirclesViewController.m

// jsonTest


// Created by Sachin Bhardwaj on 12/12/12.

// Copyright (c) 2012 Sachin Bhardwaj. All rights reserved.


#import "CirclesViewController.h"

@interface CirclesViewController ()


@implementation CirclesViewController

@synthesize name,activity;

@synthesize table;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil


self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

if (self) {

// Custom initialization


return self;


- (void)viewDidLoad


[super viewDidLoad];

// CircleGroupName = [[NSMutableArray alloc]init];


// [self getdata];



name = [[NSMutableArray alloc]init];

[super viewWillAppear:animated];

[self getdata];



NSString *urlstring = [NSString stringWithFormat:@"http://api.kivaws.org/v1/loans/search.json?status=fundraising"];

_feedurl = [NSURL URLWithString:urlstring];

NSMutableURLRequest *theRequest=[NSMutableURLRequest requestWithURL:_feedurl];

//do post request for parameter passing

[theRequest setHTTPMethod:@"GET"];

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

if( theConnection )


[theConnection release];




[theConnection release];



- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

responseData = [[NSMutableData alloc] init];

httpResponse = (NSHTTPURLResponse*)response;

responseCode = [httpResponse statusCode];

responseString = [NSHTTPURLResponse localizedStringForStatusCode:[(NSHTTPURLResponse *)response statusCode]];


- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data11{

[responseData appendData:data11];

NSString* myString;

myString = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding];

[myString release];


- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {


- (void)connectionDidFinishLoading:(NSURLConnection *)connection


if(responseCode == 200){

NSString *_responsedatastring = [[[NSString alloc] initWithData:responseData encoding: NSASCIIStringEncoding]autorelease];

NSData* logindata = [_responsedatastring dataUsingEncoding:NSUTF8StringEncoding];

NSArray *profileFeeds_array = [NSJSONSerialization JSONObjectWithData:logindata options: NSJSONReadingMutableLeaves error:nil];

self.name = [profileFeeds_array valueForKey:@"loans"];

self.activity = [name valueForKey:@"name"];


[table reloadData];


UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Please try again.Network Problem"





alert.tag = 2;

[alert show];

[alert release];



- (void)didReceiveMemoryWarning


[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation


return YES;


- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

// [pullTableView reloadData];


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView


return 1;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section


return [name count];


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath


static NSString *CellIdentifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];



cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];


cell.textLabel.text = [activity objectAtIndex:indexPath.row];

return cell;


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath


// Navigation logic may go here. Create and push another view controller.



Step 7

Now we check the output in a console window.


It is a running API so sometimes the output will be different. But here my main purpose is to explain how to use a JSON service in iPhone.

Step 8

Finally we click on the Run button to show the output.

Output 1 in iPhone:


Before scrolling down to show output in the table.

Output 2 in iPhone:


After scrolling down to show output in the table.


API Reference-http://build.kiva.org/api