一、什么是JSON

JSON是一种轻量级的数据格式,一般用于数据交互

服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)

JSON的格式很像OC中的字典和数组

{"name" : "jack", "age" : 10}

{"names" : ["jack", "rose", "jim"]}

标准JSON格式的注意点:key必须用双引号

要想从JSON中挖掘出具体数据,得对JSON进行解析。即把JSON 转换为 OC数据类型

二、JSON – OC 转换对照表

对照关系

三、JSON解析方案

1.在iOS中,JSON的常见解析方案有4种

(1)第三方框架:JSONKit、SBJson、TouchJSON(性能从左到右,越差)

(2)苹果原生(自带):NSJSONSerialization(性能最好)

2.NSJSONSerialization的常见方法

(1)JSON数据 ——》 OC对象

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;

(2)OC对象 ——》 JSON数据

+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;

3.解析来自服务器的JSON示意图

四、部分代码示例

 1 #import "YYViewController.h"
2 #import "MBProgressHUD+MJ.h"
3
4 @interface YYViewController ()
5 @property (weak, nonatomic) IBOutlet UITextField *username;
6 @property (weak, nonatomic) IBOutlet UITextField *pwd;
7 - (IBAction)login;
8
9 @end
10
11 @implementation YYViewController
12
13 - (IBAction)login {
14 // 1.提前的表单验证
15 if (self.username.text.length==0) {
16 [MBProgressHUD showError:@"请输入用户名"];
17 return;
18 }
19 if (self.pwd.text.length==0) {
20 [MBProgressHUD showError:@"请输入密码"];
21 return;
22 }
23 // 2.发送请求给服务器(带上账号和密码)
24 //添加一个遮罩,禁止用户操作
25 [MBProgressHUD showMessage:@"正在努力加载中...."];
26
27 //
28 // 1.设置请求路径
29 // NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text];
30 // NSURL *url=[NSURL URLWithString:urlStr];
31
32 // 1.设置请求路径
33 NSURL *URL=[NSURL URLWithString:@"http://192.168.1.53:8080/MJServer/login"];//不需要传递参数
34
35 // 2.创建请求对象
36 NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL];//默认为get请求
37 request.timeoutInterval=5.0;//设置请求超时为5秒
38 request.HTTPMethod=@"POST";//设置请求方法
39
40 //设置请求体
41 NSString *param=[NSString stringWithFormat:@"username=%@&pwd=%@",self.username.text,self.pwd.text];
42 //把拼接后的字符串转换为data,设置请求体
43 request.HTTPBody=[param dataUsingEncoding:NSUTF8StringEncoding];
44
45 //客户端类型,只能写英文
46 [request setValue:@"ios+android" forHTTPHeaderField:@"User-Agent"];
47
48 // 3.发送请求
49 //获取一个主队列
50 NSOperationQueue *queue=[NSOperationQueue mainQueue];
51 [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
52 //当请求结束的时候调用(有两种结果,一个是成功拿到数据,也可能没有拿到数据,请求失败)
53 [MBProgressHUD hideHUD];
54 if (data) {//请求成功
55 NSDictionary *dict=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
56 //判断后,在界面提示登录信息
57 NSString *error=dict[@"error"];
58 if (error) {
59 [MBProgressHUD showError:error];
60 }else
61 {
62 NSString *success=dict[@"success"];
63 [MBProgressHUD showSuccess:success];
64 }
65 }else //请求失败
66 {
67 [MBProgressHUD showError:@"网络繁忙,请稍后重试!"];
68 }
69 }];
70 NSLog(@"请求发送完毕");
71 }
72 @end 转:
http://www.cnblogs.com/wendingding/p/3815303.html

iOS开发网络篇—JSON介绍的更多相关文章

  1. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  2. iOS开发网络篇—简单介绍ASI框架的使用

    iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...

  3. iOS开发网络篇-JSON文件的解析

    一.什么是JSON数据 1.JSON的简单介绍 JSON:是一种轻量级的传输数据的格式,用于数据的交互 JSON是javascript语言的一个子集.javascript是个脚本语言(不需要编译),用 ...

  4. iOS开发——网络篇——JSON和XML,NSJSONSerialization ,NSXMLParser(XML解析器),NSXMLParserDelegate,MJExtension (字典转模型),GDataXML(三方框架解析XML)

    一.JSON 1.JSON简介什么是JSONJSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典 ...

  5. iOS开发网络篇-NSURLSession介绍

    NSURLSession: 作用: 和NSURLConnection一样 1.负责发送请求,建立客户端和服务器的连接发送数据给服务器 2.并收集来自服务器的响应数据 步骤: 1.创建NSURLSess ...

  6. iOS开发网络篇—XML数据的解析

     iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...

  7. iOS开发网络篇—发送json数据给服务器以及多值参数

    iOS开发网络篇—发送json数据给服务器以及多值参数 一.发送JSON数据给服务器 发送JSON数据给服务器的步骤: (1)一定要使用POST请求 (2)设置请求头 (3)设置JSON数据为请求体 ...

  8. iOS开发网络篇—HTTP协议

    iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  9. iOS开发网络篇—发送GET和POST请求(使用NSURLSession)

    iOS开发网络篇—发送GET和POST请求(使用NSURLSession) 说明: 1)该文主要介绍如何使用NSURLSession来发送GET请求和POST请求 2)本文将不再讲解NSURLConn ...

随机推荐

  1. boost解析json(2)

    "{ "A":1, "B":{ "C":2, "D":3 }, "E":[ {" ...

  2. 在ECSHOP后台左侧导航中增加新菜单

    在ECSHOP后台左侧导航中增加新菜单 ECSHOP教程/ ecshop教程网(www.ecshop119.com) 2011-11-08   有个别高级用户(懂PHP的),提到这样的问题: 在后台管 ...

  3. 把数据保存到数据库附加表 `dede_addonarticle` 时出错,请把相关信息提交给DedeCms官方。Duplicate entry

    把数据保存到数据库附加表 `dede_addonarticle` 时出错,请把相关信息提交给DedeCms官方.Duplicate entry ’3′ for key ‘PRIMARY’ 你的主键是不 ...

  4. mysql 索引 详解

    索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型. 在数据库表中,对字段建立索引可以大大提高查询速度.假如我们创建了一个 mytabl ...

  5. 利用ps橡皮擦工具快速抠图

    原图 最终效果 1.打开图片,ctrl+j得到图层1,点击红圈处,创建图层2,放于图层1与背景层之间,填充白色作为检查效果和新的背景. 2.按图示给出的参数,用背景橡皮擦在图层1里擦吧,注意擦的时候尽 ...

  6. WSP (无线会话协议)

    WSP (无线会话协议) WSP是在无线应用协议(WAP:Wireless Application Protocol )组中的协议,用两种服务提供无线应用环境一个稳定的接口. 中文名 WSP WAP ...

  7. Linux for windows cp 数据中文乱码

    今天遇到一个很奇葩的问题,不仅让我纠结了半天更影响了我的工作效率找到了一种解决方法.分享和记录下以备自己和后人参考 说下情况 本人的Linux服务器上的数据要cp到新安装的windows server ...

  8. 我的前端MVC之路

    大约十几个月前,了解到时下前端MVC之火爆,同事推荐我了解一下angular.当时也不是特别在意,只是稍稍阅读了一遍官方文档,并尝试了文档上的例子.其实当时也颇有震惊之感的,原来代码还可以这么写!看完 ...

  9. iOS上传应用过程中出现的错误"images contain alpha channels or transparencies"以及解决方案

    如何取消图片透明度  本文永久地址为 http://www.cnblogs.com/ChenYilong/p/3989954.html,转载请注明出处. 当你试图通过<预览>进行" ...

  10. 07 DAY 1

    壮烈的一天... 第一题 本意是水题,然后写了块状数组模拟,最后发现算法错了... 然后其实快排一遍扫一遍完事... 100分 #include <cstdio> #include < ...