- (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-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)、true
、false
、null
、对象(object)或者数组(array)。这些结构可以嵌套。

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

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

空白可以加入到任何符号之间。 以下描述了完整的语言。
分享到:
相关推荐
本教程将深入讲解iPhone开发中的JSON解析,帮助开发者更好地理解和运用这一技术。 首先,我们需要了解JSON的基本结构。JSON是一种轻量级的数据格式,其数据结构主要由对象(对象是一个键值对的集合,用花括号 `{}` ...
本示例程序将详细讲解如何在iPhone应用程序中解析JSON数据,以便与服务器进行数据交互。 首先,我们需要了解JSON的基本结构。JSON是一种轻量级的文本格式,用于存储和传输数据。它主要由对象(键值对)和数组(有序...
本资料“Json.zip”专注于讲解如何在iPhone应用中使用JSON,特别是涉及到将JSON解析为字典以及将字典转换回JSON格式的逆向操作。 首先,让我们深入理解JSON的格式。JSON是一种基于文本的格式,其数据结构主要由对象...
本篇主要介绍如何在iPhone开发中进行JSON解析,结合给出的标签“源码”和“工具”,我们将深入探讨JSON解析的原理以及如何使用第三方库SBJSON进行操作。 一、JSON基础 JSON是一种轻量级的数据格式,它基于...
6. **使用第三方库**:虽然NSJSONSerialization是内建的解决方案,但在某些复杂场景下,第三方库如SBJSON、JSONKit或AFNetworking的JSON序列化组件可能会提供更高效的性能和额外的功能。 7. **网络请求和JSON**:在...
- **NSJSONSerialization**:这是Apple官方提供的JSON解析和序列化框架,集成在Foundation框架中,无需额外引入第三方库。它可以将JSON字符串转换为Foundation对象(如NSArray、NSDictionary),反之亦然。 - **...
注意,虽然NSJSONSerialization通常足够处理大多数JSON解析需求,但当遇到不符合JSON规范的数据时,可能会导致解析失败。此时,你需要检查输入数据的格式,确保其符合JSON的标准。 最后,如果你需要处理的JSON数据...
总的来说,这个项目涵盖了iOS开发中的网络请求、JSON解析以及模型对象的创建和使用。理解这些概念和技术对于任何iOS开发者来说都是非常基础且重要的,尤其是在构建需要与服务器交互的应用时。通过实践和学习这些知识...
3. **JSON解析XML**:描述中提到使用JSON解析XML文件,这可能是因为服务器返回的数据原本是XML格式,但iPhone客户端更倾向于处理JSON。可以使用第三方库如GDataXMLParser解析XML,然后转换成JSON,例如使用...
总之,在Objective-C中使用JSON访问Web服务涉及网络请求、JSON解析和错误处理等多个方面。通过`NSURLSession`和`NSJSONSerialization`,你可以轻松地与JSON API进行交互,为iPhone 5用户带来优质的体验。在实际开发...
2. **JSON解析器**:在`json.framework`中,可能有一个自定义的JSON解析器,它可以解析JSON文本并生成相应的Foundation对象(如`NSArray`、`NSDictionary`等)。这个解析器可能是线程安全的,允许在多线程环境中同时...
3. **JSON解析**:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。iOS中,可以使用内置的`NSJSONSerialization`类进行JSON数据的解析和序列化,这...
2. **JSON解析**:QQ服务器返回的数据通常以JSON格式传输,源码中会有解析JSON数据的部分,可能使用了苹果的Foundation框架中的NSJSONSerialization或者第三方库如Mantle、SwiftyJSON来进行解析。 3. **多线程**:...
JSONKit 是一个高性能的 JSON...然而,对于新的项目,你可能需要考虑使用 Apple 自带的 NSJSONSerialization,或者其他的现代 JSON 解析库,如 Mantle 或 ObjectMapper,它们通常提供了更现代的 API 和更好的兼容性。
而`NSJSONSerialization`则是解析JSON数据的好选择。 2. **缓存策略**:合理利用缓存来存储频繁访问的数据,减少重复解析操作。缓存可以是内存中的对象,也可以是本地文件系统中的数据。 3. **数据预处理**:在...
总的来说,糯米团客户端的开发涵盖了Object-C编程基础、网络编程、JSON解析、UI设计、数据展示、地理位置服务和推送通知等多个知识点。开发者需要具备扎实的Objective-C基础,熟悉Apple的开发环境和工具,同时对移动...
3. **JSON解析**:学习如何使用NSJSONSerialization或第三方库如SwiftyJSON解析和序列化JSON数据。 4. **UI集成**:了解如何将微博的登录、分享等功能与自定义的用户界面结合。 5. **多线程**:在异步操作中如何正确...
书中将详细解释如何使用内置的NSJSONSerialization进行JSON解析,以及使用第三方库如SWXMLHash处理XML数据。同时,也会涉及网络数据的安全性,比如HTTPS和SSL/TLS协议,以确保用户数据传输的安全。 此外,对于企业...
4. **JSON解析**:返回的余票信息通常是JSON格式,应用需要解析这些数据,可以使用内置的NSJSONSerialization类或第三方库如SwiftyJSON来完成。 5. **数据持久化**:为了保存用户的查询历史或设置,应用可能使用了...
5. **网络编程**:大多数应用都需要与服务器进行数据交互,因此掌握URLSession、JSON解析(如NSJSONSerialization)和XML处理等网络编程技术是必不可少的。 6. **Core Data**:苹果的持久化框架,用于存储和检索...