• json解包与json封包


    首先,对两个名词进行简单的说明:

    1.NSData

    用来存储二进制的数据类型。NSData类提供了一种简单的方式,它用来设置缓冲区、将文件的内容读入缓冲区,或将缓冲区的内容写到一个文件。不变缓冲区(NSData类),也可定义可变的缓冲区(NSMutableData类)。

    2.json

    作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式。

    小结:我们只需要明白NSData类型是用来存储二进制数据的,json是一种数据格式,注意是格式。

    接着,先用一段文字简单描述一下json解包和json封包:

    iOS5.0以后,苹果SDK推出了自带的json解决方案NSJSONSerialization,这是一个非常好用的json生成和解析工具,效率也是比其他第三方开源项目的高很多。NSJSONSerialization提供了json数据封包、Json数据解包。NSJSONSerialization提供了将json数据转换为NSDictionary或NSArray的解包方法,也提供了将NSDictionary、NSArray对象转换为json数据(可以通过调用isValidJSONObject来判断NSDictionary、NSArray对象是否可以转换为json数据)的封包方法。

    然后,用一张图试着说明两件事。其一是,利用NSJSONSerialization将一个json文件解包成数组或者字典。其二是,利用NSJSONSerialization将数组或者字典封包成一个json文件。

     

    最后还是上代码与效果图:

     1 - (void)viewDidLoad {
     2     [super viewDidLoad];
     3     
     4     NSLog(@"*******开始封包********");
     5     [self fengbao];
     6     NSLog(@"*******开始解包********");
     7     [self jiebao];
     8 }
     9 
    10 - (void)jiebao
    11 {
    12     NSString *filePath = @"/Users/Hers/Desktop/UIimageView简单测试/UIimageView简单测试/jsonDate.json";
    13     NSData *jsonData = [NSData dataWithContentsOfFile:filePath];
    14     NSError *error;
    15     NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options: NSJSONReadingMutableContainers error:&error];
    16     NSLog(@"%@",jsonDict);
    17 }
    18 
    19 - (void)fengbao
    20 {
    21     NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];
    22     // isValidJSONObject判断对象是否可以构建成json对象
    23     if ([NSJSONSerialization isValidJSONObject:dic]){
    24         NSError *error;
    25         // 创造一个json从Data, NSJSONWritingPrettyPrinted指定的JSON数据产的空白,使输出更具可读性。
    26         NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];
    27         NSLog(@"jsonData:%@",jsonData);
    28         
    29         NSString *jsonStr =[[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    30         NSLog(@"jsonStr:%@",jsonStr);
    31         
    32         BOOL result = [jsonData writeToFile:@"/Users/Hers/Desktop/UIimageView简单测试/UIimageView简单测试/jsonDate.json" atomically:YES];
    33         NSLog(@"result:%d",result);
    34     }
    35 }

    输出日志:

    封包操作后产生的文件:

    【极力推荐】2018年中秋节两天的良心写作,全面讲解UITextField,总有你不知道的知识:UITextField的使用、介绍、讲解、全解、简介、说明

  • 相关阅读:
    写作 —— 细节与画面感
    写作 —— 细节与画面感
    诸子经典 —— 《管子》
    诸子经典 —— 《管子》
    金庸小说的模式
    金庸小说的模式
    SQLite中如何用api操作BLOB类型的字段
    Android WebView挂马漏洞--各大厂商纷纷落马
    [置顶] android开发之来电自动拒接并自动回复短信_上课模式app
    步步为营Hibernate全攻略(四)剪不断理还乱之:复合主键 && 组合映射
  • 原文地址:https://www.cnblogs.com/cchHers/p/5357583.html
Copyright © 2020-2023  润新知