//
//  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生成解析的更多相关文章

  1. 一个简单的 JSON 生成/解析库

    这是一个单文件的,适用于C语言的, JSON 读写库. 先说明,不想造轮子,代码是从这里拿来的: https://www.codeproject.com/Articles/887604/jWrite- ...

  2. C#使用LitJson对Json数据解析

    JSON 介绍 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - ...

  3. Android网络请求与数据解析,使用Gson和GsonFormat解析复杂Json数据

    版权声明:未经博主允许不得转载 一:简介 [达叔有道]软件技术人员,时代作者,从 Android 到全栈之路,我相信你也可以!阅读他的文章,会上瘾!You and me, we are family ...

  4. Win(Phone)10开发第(3)弹,简单的Demo程序网络请求json解析列表显示

    先分享一个由Json字符串直接生成解析对应的类的工具: jsonclassgenerator14 百度天气接口 下面是由一个小功能(又特么的是天气)的实现,记录下下UAP的流程和结构(其实跟之前一模一 ...

  5. iOS网络编程解析协议三:JSON数据传输解析

    作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 基于JavaScript的一个子集 易读性略差,编码手写难度大,数据量小 JSON格式取代了XML给网络传输带来了很大的便利, ...

  6. Qt之JSON生成与解析

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.它基于JavaScript(Standard ECMA-262 3rd Edition - December ...

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

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

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

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

  9. Android Json生成及解析实例

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

随机推荐

  1. 中美会计准则差异比较(PRC GAAP VS US GAAP)

    http://bbs.chinaacc.com/forum-2-43/topic-2023118.html 一.中美会计准则的实质性差别    rule based vs principle base ...

  2. Linux-文件查找命令find

    find - search for files in a directory hierarchy find命令用于在目录层级中查找文件 SYNOPSIS find [-H] [-L] [-P] [-D ...

  3. 提示 make: 没有什么可以做的为 `all'

    提示 make: 没有什么可以做的为 `all'. make clean 一次,编译过程又有了.

  4. 关于能量场和力场弯曲空间的实验证明 EXPERIMENTAL PROOF ON THE BENDING SPACE OF ENERGY FIELD AND FORCE FIELD

    前文提到,F = ma, E = mc^2,并且等效是传递的,等效概念具有同属性.所以不止能量,力场也可以弯曲空间. 实验:某人被头顶上方的电站10几万伏的设备吸收,烧毁双臂. (虽然这个实验不应具有 ...

  5. SQL关闭自增长列标识:SET IDENTITY_INSERT

    关闭自增长列添加记录,然后再恢复自增长功能 SET IDENTITY_INSERT 表名 ON; inert ,); SET IDENTITY_INSERT 表名 OFF

  6. ASP.Net MVC OA项目笔记<六>

    1.1.1 开始写业务,先写业务的实现再写业务的接口 业务类中也是有写增删改查公用的方法 引用Model,IDAL,DALFactory BLL添加两个类 UserInfoService,BaseSe ...

  7. 【BZOJ1049】 [HAOI2006]数字序列

    BZOJ1049 [HAOI2006]数字序列 dp好题? 第一问 第一问我会做!令\(b_i=a_i-i\),求一个最长不下降子序列. \(n-ans\)就是最终的答案. 第二问 好难啊.不会.挖坑 ...

  8. LOJ#3093. 「BJOI2019」光线(递推+概率期望)

    题面 传送门 题解 把\(a_i\)和\(b_i\)都变成小数的形式,记\(f_i\)表示\(1\)单位的光打到第\(i\)个玻璃上,能从第\(n\)个玻璃下面出来的光有多少,记\(g_i\)表示能从 ...

  9. 「雅礼集训 2017 Day2」解题报告

    「雅礼集训 2017 Day2」水箱 我怎么知道这种题目都能构造树形结构. 根据高度构造一棵树,在树上倍增找到最大的小于约束条件高度的隔板,开一个 \(vector\) 记录一下,然后对于每个 \(v ...

  10. 实现域名访问网站—nginx反向代理

    今天在跟项目的时候,是否被耍了三个多小时,最后在我准备号材料准备他人求助的时候,在收集材料的时候,居然访问通了, 别问我为什么,我也不知道 ,哈哈哈哈(苦逼脸...) 分享出来,大家共同学习: 这个是 ...