网络之Json生成解析
//
// ViewController.m
// Json
//
// Created by City--Online on 15/4/28.
// Copyright (c) 2015年 CYW. All rights reserved.
//
#define strUrl @"http://app.api.autohome.com.cn/autov3.2/news/newslist-a2-pm1-v3.2.0-c0-nt0-p1-s20-l0.html"
#import "ViewController.h"
#import "SBJson.h"
#import "CJSONDeserializer.h"
#import "CJSONSerializer.h"
#import "JSONKit.h"
@interface ViewController ()
@property(nonatomic,strong)NSString *stringData;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// json解析
NSURL *url=[NSURL URLWithString:strUrl];
NSError *err=NULL;
//获取Json字符串
NSString *Jsonstr=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&err];
NSData *data=[Jsonstr dataUsingEncoding:NSUTF8StringEncoding];
// 第一种:IOS5以上自带的JSONObjectWithData
// typedef NS_OPTIONS(NSUInteger, NSJSONReadingOptions) {
// NSJSONReadingMutableContainers = (1UL << 0),//返回可变容器,NSMutableDictionary或NSMutableArray
// NSJSONReadingMutableLeaves = (1UL << 1),//返回的JSON对象中字符串的值为NSMutableString
// NSJSONReadingAllowFragments = (1UL << 2)//允许JSON字符串最外层既不是NSArray也不是NSDictionary,但必须是有效的JSON Fragment。例如使用这个选项可以解析 @“123” 这样的字符串。
// }
//解析
NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&err];
if (err==nil) {
NSLog(@"%@",[dic objectForKey:@"message"]);
NSArray *array=[[dic objectForKey:@"result"] objectForKey:@"focusimg"];
NSLog(@"%@",[array objectAtIndex:1]);
}
//生成
//判断是否能转为Json
if ([NSJSONSerialization isValidJSONObject:dic]) {
//转为Json
NSData *data= [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
NSString *str=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"%@",str);
//json再次转为字典
NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&err];
NSLog(@"%@",dic);
}
// 第二种:SBJson
// 解析
//引入#import "SBJson.h"
SBJsonParser *parser=[[SBJsonParser alloc]init];
NSDictionary *SBJsonDic=[parser objectWithString:Jsonstr error:nil];
NSLog(@"%@",SBJsonDic);
SBJsonWriter *sbwriter=[[SBJsonWriter alloc]init];
NSString *sbstr=[sbwriter stringWithObject:SBJsonDic];
NSLog(@"%@",sbstr);
// 第三种:Touch Json
// 解析
// #import "TouchJson/JSON/CJSONDeserializer.h"
NSDictionary *touchDic=[[CJSONDeserializer deserializer] deserialize:data error:nil];
NSLog(@"%@",touchDic);
// 生成
NSString *touchstr=[[NSString alloc]initWithData: [[CJSONSerializer serializer] serializeDictionary:touchDic error:nil] encoding:NSUTF8StringEncoding];
NSLog(@"%@",touchstr);
// 第四种:JsonKit
// 使用Jsonkit时引入第三方稍微麻烦
// 第一步:引入Jsonkit
// 第二步:JsonKit支持MRC,不支持ARC(伟哥指导纠正thanks)。点击Targets->Build Phases->Compile Sources中找到JsonKit.m点击输入-fno-objc-arc
// 第三步:在Build Setting中Levels中搜索 Direct usage of 'isa'设置为NO
//生成
NSDictionary *JsonKitDic=[Jsonstr objectFromJSONString];
NSLog(@"%@",JsonKitDic);
//解析
NSString *JsonKitstr=[JsonKitDic JSONString];
NSLog(@"%@",JsonKitstr);
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
Json比较简单,直接上代码,具体说明找度娘,JsonKit在ios9中会出现闪退报错 需要下载最新的JsonKit
网络之Json生成解析的更多相关文章
- 一个简单的 JSON 生成/解析库
这是一个单文件的,适用于C语言的, JSON 读写库. 先说明,不想造轮子,代码是从这里拿来的: https://www.codeproject.com/Articles/887604/jWrite- ...
- C#使用LitJson对Json数据解析
JSON 介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - ...
- Android网络请求与数据解析,使用Gson和GsonFormat解析复杂Json数据
版权声明:未经博主允许不得转载 一:简介 [达叔有道]软件技术人员,时代作者,从 Android 到全栈之路,我相信你也可以!阅读他的文章,会上瘾!You and me, we are family ...
- Win(Phone)10开发第(3)弹,简单的Demo程序网络请求json解析列表显示
先分享一个由Json字符串直接生成解析对应的类的工具: jsonclassgenerator14 百度天气接口 下面是由一个小功能(又特么的是天气)的实现,记录下下UAP的流程和结构(其实跟之前一模一 ...
- iOS网络编程解析协议三:JSON数据传输解析
作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 基于JavaScript的一个子集 易读性略差,编码手写难度大,数据量小 JSON格式取代了XML给网络传输带来了很大的便利, ...
- Qt之JSON生成与解析
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...
- iOS开发网络篇-JSON文件的解析
一.什么是JSON数据 1.JSON的简单介绍 JSON:是一种轻量级的传输数据的格式,用于数据的交互 JSON是javascript语言的一个子集.javascript是个脚本语言(不需要编译),用 ...
- iOS开发网络篇—JSON数据的解析
iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...
- Android Json生成及解析实例
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
随机推荐
- ASP.NET Web API 入门 (API接口、寄宿方式、HttpClient调用)
一.ASP.NET Web API接口定义 ASP.NET Web API默认实现了Action方法和HTTP方法的映射,Action方法方法名体现了其能处理的请求必须采用的HTTP方法 二.寄宿方式 ...
- 背水一战 Windows 10 (57) - 控件(集合类): ListViewBase - 增量加载, 分步绘制
[源码下载] 背水一战 Windows 10 (57) - 控件(集合类): ListViewBase - 增量加载, 分步绘制 作者:webabcd 介绍背水一战 Windows 10 之 控件(集 ...
- Spring IOC 容器源码分析 - 填充属性到 bean 原始对象
1. 简介 本篇文章,我们来一起了解一下 Spring 是如何将配置文件中的属性值填充到 bean 对象中的.我在前面几篇文章中介绍过 Spring 创建 bean 的流程,即 Spring 先通过反 ...
- jQuery ajax 302跨域
一.ajax 302 ajax用于异步获取服务器数据,但是某天有这么一个使用场景: > 基于安全考虑,登录的用户的信息失效时,系统的所有ajax接口都由服务器直接重定向到系统的登录页面,此时登录 ...
- ViewPager无限滑动
2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...
- Python大黑阔—url采集+exp验证,带你批量测试
i春秋作家:大木瓜 前言: 最近几天在整理从各处收集来的各种工具包,大大小小的塞满了十几个G的硬盘,无意间发现了一个好几年前的0day.心血来潮就拿去试了一下,没想到真的还可以用,不过那些站点都已经老 ...
- 分布式锁实现思路及开源项目集成到springmvc并使用
分布式锁顾名思义就是在分布式系统下的锁,而使用锁的唯一目的就是为了防止多个请求同时对某一个资源进行竞争性读写 在使用多线程时,为了让某一资源某一时刻只能有一个操作者,经常使用synchronized, ...
- 【wireshark】插件开发(五):C插件
1. Wireshark对C插件的支持 每个解析器解码自己的协议部分, 然后把封装协议的解码传递给后续协议. 因此它可能总是从一个Frame解析器开始, Frame解析器解析捕获文件自己的数据包细节( ...
- iOS---代理、协议、通知 详解
一.代理 1.代理的介绍 代理是一种通用的设计模式 代理使用方式:A 让 B 做件事,空口无凭,签个协议. 所以代理有三部分组成: 委托方: 定义协议 协议 : 用来规定代理方可以做什么,必须做什 ...
- python 结巴分词简介以及操作
中文分词库:结巴分词 文档地址:https://github.com/fxsjy/jieba 代码对 Python 2/3 均兼容 全自动安装:easy_install jieba 或者 pip in ...