iOS下json的解析 NSJSONSerialization
- - (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的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

空白可以加入到任何符号之间。 以下描述了完整的语言。
iOS下json的解析 NSJSONSerialization的更多相关文章
- IPhone下json的解析 NSJSONSerialization
		
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Lan ...
 - iOS下JSON反序列化开源库
		
iOS下JSON字符串反序列化成对象.在正式的项目中比較常见.例如以下几个经常使用开源库.能够依据个人喜好任选其一: 1. JSONModel: https://github.com/icanzilb ...
 - iOS学习—JSON数据解析
		
关于在iOS平台上进行JSON解析,已经有很多第三方的开源项目,比如TouchJson,JSONKit,SBJon等,自从iOS5.0以后,苹果SDK推出了自带的JSON解决方案NSJSONSer ...
 - iOS学习——JSON数据解析(十一)
		
在之前的<iOS学习——xml数据解析(九)>介绍了xml数据解析,这一篇简单介绍一下Json数据解析.JSON 即 JavaScript Object Natation,它是一种轻量级的 ...
 - ios之json,xml解析
		
JSON解析步骤: 1.获取json文件路径 NSString*path = [[NSBundle mainBundle] pathForResource:@"Teacher"of ...
 - Android下Json数据解析
		
如从网络获取JSON 则需要创建一个工具类,该类返回一个字符串为JSON文本 package com.example.jsonapp; import java.io.InputStreamReader ...
 - IOS 解析Json数据(NSJSONSerialization)
		
● 什么是JSON ● JSON是一种轻量级的数据格式,一般用于数据交互 ● 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除 外) ● JSON的格式很像OC中的字典和数组 ...
 - iOS - JSON 数据解析
		
iOS - JSON 数据解析 前言 NS_CLASS_AVAILABLE(10_7, 5_0) @interface NSJSONSerialization : NSObject @availab ...
 - 玩转iOS开发 - JSON 和 Xml 数据解析
		
前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...
 
随机推荐
- Linux下提取IP至文件
			
ifconfig | grep 'inet[^6]' | sed 's/^\s*//g' | cut -d ' ' -f2 > ips.txt 排除127开头的IP: ifconfig | gr ...
 - bootstrap的select2校验及不影响原来的格式
			
<style> .has-error .select2-choice, .has-error .select2-choices, .has-error.simple .select2-ch ...
 - JSON: property "xxx" has no getter method in class "..."
			
Exception in thread "main" net.sf.json.JSONException: java.lang.NoSuchMethodException: Pro ...
 - 转mysql复制主从集群搭建
			
最近搭了个主从复制,中间出了点小问题,排查搞定,记录下来 1环境:虚拟机:OS:centos6.5Linux host2 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 ...
 - DP:Ant Counting(POJ 3046)
			
数蚂蚁 题目大意:一只牛想数蚂蚁,蚂蚁分成很多组,每个组里面有很多只蚂蚁,现在问你有多少种组合方式 (说白了就是问1,1,1,...,2...,3...,4...)这些东西有多少种排列组合方式 这一道 ...
 - mac os下获得root权限
			
警告:对系统不了解的请慎用 操作步骤:1.打开实用工具->终端2.键入sudo passwd root 然后提示你输入当前登录用户密码,通过以后,提示你输入两遍root的密码.这样你就设置好ro ...
 - volley 应用  GET POST请求 图片异步加载
			
package com.example.volleydemo; import java.util.HashMap; import java.util.Map; import org.json.JSON ...
 - Sql server之路 (四)添加本地数据库MDF文件
			
安装环境 VS2008 Vs2008 Sp1 安装系统 Win8 1.创建窗体 右键添加新项 上一步 上一步 点击确定 双击Database1.mdf文件 在列名出填写字段名 保存 Ctrl+S 点 ...
 - Sql server之路 (二)登录本地服务器
			
安装环境 Microsoft SQL Server Management Studio Express http://www.microsoft.com/zh-cn/download/details ...
 - 富士通F-02D 1630万像素翻盖手机docomo官方解锁送充电器
			
此款富士通F-02D手机是非常漂亮的一款拿在手上十分有质感的日版翻盖手机.2011年11月上市的新款手机.1630万像素的高清摄像头,防水,带指纹锁,高清HDMI输出,非常漂亮的手机灯光设计,其性能配 ...