iPhone下jsonの解析NSJSONSSerialization
4782 ワード
- (IBAction)JOSNButtonPressed:(id)sender {
NSString *str=[@"http://douban.fm/j/mine/playlist?type=n&h=&channel=0&from=mainsite&r=4941e23d79" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURLURLWithString :str];
// ASIHTTPRequest
ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
//
[request startSynchronous];
NSError *error = [request error];
assert (!error);
// , Response // 2 , :responseData
NSData *data = [request responseData];
NSString *tmp=[[NSStringalloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",tmp);
[tmp release];
// JSON
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSArray *songArray = [json objectForKey:@"song"];
NSLog(@"song:%@",songArray);
/*
NSDictionary *aSony = [songArray objectAtIndex:0];
NSString *array = [aSony objectForKey:@"albumtitle"];
NSLog(@"albumtitle:%@",array);
*/
// JSON song albumtitle
for(NSDictionary *aSony in songArray)
{
NSString *array = [aSony objectForKey:@"albumtitle"];
NSLog(@"albumtitle:%@",array);
}
}
// JSON
- (IBAction)createaJSON:(id)sender {
NSDictionary *song = [NSDictionarydictionaryWithObjectsAndKeys:@"i can fly",@"title",@"4012",@"length",@"Tom",@"Singer", nil];
// isValidJSONObject json
if ([NSJSONSerializationisValidJSONObject:song])
{
NSError *error;
// json Data, NSJSONWritingPrettyPrinted JSON , 。
NSData *jsonData = [NSJSONSerializationdataWithJSONObject:song options:NSJSONWritingPrettyPrintederror:&error];
NSString *json =[[NSStringalloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"json data:%@",json);
}
}
JSON(JavaScript Object Notation)は、軽量レベルのデータ交換フォーマットです.読みやすく、書きやすい.同時に機械の解析と生成も容易である.JavaScript Programming Languageに基づいて Standard ECMA-2623 rd Edition-December 1999のサブセット.JSONは完全に言語から独立したテキスト形式を採用しているが、C言語ファミリーに似た習慣(C,C++,C#,Java,JavaScript,Perl,Pythonなどを含む)も使用している.これらの特性はJSONを理想的なデータ交換言語にした.JSONは2つの構造に構築されています.
JSONは以下の形式を有する.
オブジェクトは無秩序な「名前/値」ペアのセットです.オブジェクトは「{」(左かっこ)で始まり、「}」(右かっこ)で終わります.各名前の後に":"(コロン);「,」(カンマ)で区切られた「名前/値」ペア.
配列は値(value)の秩序化された集合です.配列は[](左中括弧)で始まり、[](右中括弧)で終わります.値の間に「,」(カンマ)で区切ります.
値(value)は、二重引用符で囲まれた文字列(string)、数値(number)、
true
false
・、 null
、オブジェクト(object)または配列(array).これらの構造はネストできます.文字列(string)は、二重引用符で囲まれた任意の数のUnicode文字の集合であり、反斜線変換を用いる.1つの文字(character)は、個別の文字列(character string)です.
文字列(string)は、CまたはJavaの文字列によく似ています.
数値(number)もCやJavaの数値とよく似ています.未使用の8進数と16進数のフォーマットを除去します.いくつかの符号化の詳細を除去します.
空白は任意の記号の間に追加できます.以下に、完全な言語について説明します.