网络之Json生成解析

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

//
//  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


相关文章
|
11天前
|
网络协议 算法 程序员
提高网络稳定性的关键:TCP滑动窗口与拥塞控制解析
**TCP可靠传输与拥塞控制概要:** 小米讲解TCP如何确保数据可靠性。TCP通过分割数据、编号段、校验和、流量控制(滑动窗口)和拥塞控制(慢开始、拥塞避免、快重传、快恢复)保证数据安全传输。拥塞控制动态调整窗口大小,防止网络过载,提升效率。当连续收到3个相同ACK时执行快重传,快恢复避免剧烈波动。关注“软件求生”获取更多技术内容。
33 4
提高网络稳定性的关键:TCP滑动窗口与拥塞控制解析
|
2天前
|
安全 网络安全 数据安全/隐私保护
数字堡垒:网络安全漏洞、加密技术与安全意识的深度解析
【7月更文挑战第25天】在数字化时代的浪潮中,网络安全已成为维护个人隐私和企业资产的关键防线。本文深入探讨了网络安全的三大支柱:网络漏洞识别与防护机制、先进的加密技术以及培养全民网络安全意识的重要性。通过分析最新的网络攻击案例、评估不同加密算法的优劣,并讨论如何通过教育提升公众的安全防范意识,旨在为读者提供一个全面的网络安全知识框架,从而在日益复杂的网络环境中保持警觉和保护。
|
4天前
|
安全 网络安全 数据安全/隐私保护
网络安全漏洞、加密技术与安全意识的深度解析
本文将深入探讨网络安全漏洞、加密技术以及安全意识的重要性和影响。我们将从网络安全漏洞的定义、类型及其产生的原因开始,然后详细解析加密技术的工作原理、种类及其在保护信息安全中的作用。最后,我们将讨论安全意识的重要性,以及如何通过提高公众的安全意识来防止网络攻击。
11 3
|
9天前
|
网络协议 程序员
TCP报文格式全解析:网络小白变高手的必读指南
**TCP报文格式详解摘要** 探索TCP,传输层的关键协议,提供可靠数据传输。报文含源/目的端口(标识应用),32位序号(跟踪字节顺序),确认序号(确认接收),4位首部长度,6位标志(URG, ACK, PSH, RST, SYN, FIN),窗口大小(流量控制),检验和(数据完整性),紧急指针(优先数据)及可变长选项(如MSS, 时间戳)。了解这些字段,能更好地理解TCP连接的建立、管理和数据交换。
23 3
|
13天前
|
SQL 安全 网络安全
网络安全与信息安全:从漏洞到防护的全方位解析
【7月更文挑战第14天】在数字时代的浪潮中,网络安全与信息安全成为维护社会稳定和保护个人隐私的关键。本文深入探讨了网络环境中常见的安全漏洞、先进的加密技术以及提升安全意识的有效策略。通过分析最新的网络攻击案例和防御手段,旨在为读者提供一套实用的网络安全知识体系,帮助公众和企业构建更为坚固的信息安全防线。
|
14天前
|
域名解析 存储 网络协议
一次读懂网络分层:应用层到物理层全解析
**网络五层模型简介:** 探索网络服务的分层结构,从应用层开始,包括HTTP(网页传输)、SMTP(邮件)、DNS(域名解析)和FTP(文件传输)协议。传输层涉及TCP(可靠数据传输)和UDP(高效但不可靠)。网络层由IP(路由数据包)、ICMP(错误报告)和路由器构成。数据链路层处理MAC地址和帧传输,物理层规定了电缆、连接器和信号标准。了解这些基础,有助于深入理解网络运作机制。
24 5
|
9天前
|
JSON 分布式计算 大数据
MaxCompute产品使用合集之如何解析嵌套的JSON数据
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
11天前
|
存储 安全 网络安全
网络安全漏洞解析与防御策略:加密技术与安全意识的重要性
在数字化时代,网络安全成为维护个人隐私和企业资产的关键防线。本文深入探讨了网络安全漏洞的成因及其对信息安全构成的威胁,并分析了加密技术在保护数据安全中的作用。同时,强调了提升公众及企业员工的安全意识的必要性,以及如何通过教育和政策来构建更为坚固的网络安全环境。
|
1月前
|
XML Java 数据格式
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
深度解析 Spring 源码:从 BeanDefinition 源码探索 Bean 的本质
36 3
|
23天前
|
存储 安全 Java
深度长文解析SpringWebFlux响应式框架15个核心组件源码
以上是Spring WebFlux 框架核心组件的全部介绍了,希望可以帮助你全面深入的理解 WebFlux的原理,关注【威哥爱编程】,主页里可查看V哥每天更新的原创技术内容,让我们一起成长。

推荐镜像

更多