using Json in iphone app
I am trying to use Json in my iphone projects , but i didnt get how can I sta开发者_如何学运维rt using json in my project.
help me out from this condition. Thanks in advance.
Well if you want you can get started by this
http://iosdevelopertips.com/networking/iphone-json-flickr-tutorial-part-1.html
this tutorial will help you understand what json does, but if you want to started on using it in your code than you should use the following example:
April 26, 2009
Dealing with JSON on iPhone
You can easily use the JSON (JavaScript Object Notation) data format in client-server communications
when writing an iPhone app. This blog is not suggesting that JSON is a more superior format for data
exchange than its counterparts such as XML. In fact, we have many projects that don't use JSON.
However, handling JSON is relatively straight forward in ObjectiveC.
Unfortunately, Apple iPhone SDK (as of this writing, the latest is iPhone 2.2.1) doesn't come with
a built-in JSON parser. But I found out a good one called json-framework. It is both a generator
and a parser. As a generator, json-framework can create JSON data from an NSDictionary. As a parser,
you can pass to json-framework an NSString that consists of JSON data and it will return a
NSDictionary that encapsulates the parsed data.
Next, I'm going to show you several examples. Before you proceed, download the library and make
sure you add it to your SDK path list (see INSTALL file that comes with it). If setup properly,
you should be able to start using the library by importing its header file:
#import "JSON/JSON.h"
Consider the following code:
NSDictionary *requestData = [NSDictionary dictionaryWithObjectsAndKeys:
@"grio", @"username",
@"hellogrio", @"password",
nil];
This instantiates a new dictionary which we'll turn into a JSON string. To do so, you'll need to
use a function called JSONRepresentation. This function is added as a category to NSObject. It
means that as long as there's an import of JSON.h file, you can call the function on any NSObject
object.
NSString* jsonString = [requestData JSONRepresentation];
And this is what you got when you print (NSLog(@"%@", jsonString);):
{"username":"grio","password":"hellogrio"}
Parsing is just as simple. Consider the following JSON data:
{
"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{
"value": "New",
"onclick": "CreateNewDoc()"
},
{
"value": "Open",
"onclick": "OpenDoc()"
},
{
"value": "Close",
"onclick": "CloseDoc()"
}
]
}
}
}
Assume that this is the data that you received from a web service called and is currently stored
in an NSString called jsonResult. To parse it, you need to create SBJSON object and call one of
its initialization method, objectWithString.
SBJSON *json = [[SBJSON new] autorelease];
NSError *jsonError;
NSDictionary *parsedJSON = [json objectWithString:jsonResult error:&jsonError];
If parsing fails for reasons such as invalid construct of JSON format, jsonError variable will
be filled with the error info. If it is successful, parsedJSON will contain keys whose values
are either an NSString or NSDictionary. Let's look at the inside of parsedJSON:
NSDictionary* menu = [parsedJSON objectForKey:@"menu"];
NSLog(@"Menu id: %@", [menu objectForKey:@"id"]);
NSLog(@"Menu value: %@", [menu objectForKey:@"value"]);
And here's the output:
Menu id: file
Menu value: File
Observe the JSON data again. popup is an NSDictionary which has an array of menuitem.
NSDictionary* popup = [menu objectForKey:@"popup"];
NSArray* menuItems = [popup objectForKey:@"menuitem"];
NSEnumerator *enumerator = [menuItems objectEnumerator];
NSDictionary* item;
while (item = (NSDictionary*)[enumerator nextObject]) {
NSLog(@"menuitem:value = %@", [item objectForKey:@"value"]);
}
And this is the output:
menuitem:value = New
menuitem:value = Open
menuitem:value = Close
Sorry i forgot the link to this website
json-framework is also good if you don't like TouchJson
I use ASIHttpRequest to make an Asynchronous call to my Web Service. In my requestFinished
method I parse the JSON I received from my call and from there you can do pretty much anything with the JSON you received.
精彩评论