zoukankan      html  css  js  c++  java
  • IPhone下json的解析 NSJSONSerialization

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming LanguageStandard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。

    JSON建构于两种结构:

    • “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
    • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

    这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

    JSON具有以下这些形式:

    对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

    数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

    value)可以是双引号括起来的字符串(string)、数值(number)、truefalse、 null、对象(object)或者数组(array)。这些结构可以嵌套。

    字符串string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

    字符串string)与C或者Java的字符串非常相似。

    数值number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

     1 - (IBAction)JOSNButtonPressed:(id)sender {
     2 
     3     NSString *str=[@"http://douban.fm/j/mine/playlist?type=n&h=&channel=0&from=mainsite&r=4941e23d79" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
     4 
     5     NSURL *url = [NSURLURLWithString :str];
     6 
     7     // 构造 ASIHTTPRequest 对象
     8 
     9     ASIHTTPRequest *request = [ASIHTTPRequestrequestWithURL:url];
    10 
    11     // 开始同步请求
    12 
    13     [request startSynchronous];
    14 
    15     NSError *error = [request error];
    16 
    17     assert (!error);
    18 
    19     
    20 
    21     // 如果请求成功,返回 Response     // 对于2进制数据,使用:responseData
    22 
    23     NSData *data = [request responseData];
    24 
    25     NSString *tmp=[[NSStringalloc] initWithData:data encoding:NSUTF8StringEncoding];
    26     NSLog(@"%@",tmp);
    27 
    28     [tmp release];
    29 
    30     
    31 
    32    // 返回一个JSON对象
    33 
    34     NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
    35     NSArray *songArray = [json objectForKey:@"song"];
    36 
    37     NSLog(@"song:%@",songArray);
    38 
    39     /*
    40 
    41     NSDictionary *aSony = [songArray objectAtIndex:0];
    42 
    43     NSString *array = [aSony objectForKey:@"albumtitle"];
    44 
    45     NSLog(@"albumtitle:%@",array);
    46 
    47      */
    48 
    49     // 遍历输出JSON里song里的albumtitle
    50 
    51     for(NSDictionary *aSony in songArray)
    52 
    53     {
    54 
    55         NSString *array = [aSony objectForKey:@"albumtitle"];
    56 
    57         NSLog(@"albumtitle:%@",array);
    58 
    59     }
    60 
    61 }

    作者:zhangwenjian
    出处:http://www.cnblogs.com/zhangwenjian
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 

  • 相关阅读:
    贪心经典例题大赏
    【暑假培训1】7.13
    【7.10校内test】T1高级打字机
    【7.10校内test】T3经营与开发
    【7.10校内test】T2不等数列
    【7.9校内test】T2 极值问题
    【7.9校内test】T1挖地雷
    <知识整理>2019清北学堂提高储备D5
    <知识整理>2019清北学堂提高储备D4
    <知识整理>2019清北学堂提高储备D2
  • 原文地址:https://www.cnblogs.com/zhangwenjian/p/3664130.html
Copyright © 2011-2022 走看看