美文网首页
json相关学习

json相关学习

作者: 冷武橘 | 来源:发表于2020-04-16 18:16 被阅读0次

一、JSON数据格式简介

JSON(JavaScript Object Notation)是一种基于文本的数据交换格式。

{
    "age": 12.2,                                         
    "married":false,
    "chinese":true,
    "name":"jack",
    "weight":null,
    "height":""
}
{
    "age": 12.2,
    "married":false,
    "chinese":true,
    "name":"jack",
    "weight":null,
    "height":"",
    "content":[{
               "image":"123",
               "sounds":"souece"
               },
               {
               "url":"ww.bbaidu"
               }]

} 

一个花括号表示一个json对象,冒号左边表示json对象的属性,冒号右边表示属性的值。基本语法格式{ 名称:值对 },其中名称必须加双引号;值对是字符串加双引号,BOOL类型的值是false或true,基本数据类型不加引号。数组用中括号扩起来。

二、JSON与OC的相互转换

  • JSON数据 -> OC对象
    1 、 + (id)JSONObjectWithData:(NSData)data options:(NSJSONReadingOptions)opt error:(NSError*)error;

  • OC对象 -> JSON数据
    2、 + (NSData)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError*)error;

NSJSONWritingOptions告诉系统如何转换json数据(转换出来的对象是否可变/子对象是否课变/是否是标准json)
NSJSONReadingMutableContainers = 转换出来的对象是可变数组或者可变字典
NSJSONReadingMutableLeaves = 转换出来的OC对象中的字符串是可变的 \ 注意: iOS7之后无效 bug
NSJSONReadingAllowFragments = 如果服务器返回的JSON数据, 不是标准的JSON, 那么就必须使用这个值, 否则无法解析,允许解析出来的对象不是字典或者数组,比如直接是字符串或者NSNumber,比如直接是字符串或者NSNumber :{15}, {"abc"}

json数据
{
"age": 12.2,
"married":false,
"chinese":true,
"name":"jack",
"weight":null,
"height":""
}

一、json转换成OC对象

    //json对象转OC对象
    NSDictionary *responsObject=  [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:&error];
    [responsObject enumerateKeysAndObjectsUsingBlock:^(id  _Nonnull key, id  _Nonnull obj, BOOL * _Nonnull stop) {
        NSLog(@"%@",[obj class]);//打印观察得到的真实类型
    }];


---------------------------------------------------------------------
                 经过转换
 json 对象:          ->         字典(OC对象)
 {                             {
 "age": 1,                     age = 1;// NSNumber
 "married":false,              chinese = 1;//BOOL
 "chinese":true,    得到:      married = 0;//BOOL
 "name":"jack",                name=jack;//
 "weight":null,                weight = "<null>";//NSNull
 "height":""                   height="";//NSString
 }                             }

---------------------------------------------------------------------

  二、OC对象 转Json
    NSDictionary *dic=@{@"name":@"jack",
                        @"age":@"24",
                        };

    //1、OC对象转成json数据
    NSData*data=  [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];
    
    //2、json数据转成json字符串
    NSString *jsonstring=[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding];
    
    //3、写入1.json文件中
    [jsonstring writeToFile:@"/Users/reitaketachibana/Desktop/aassssss/1.json" atomically:YES];
三、Json字符串转OC对象
    NSString *jsonstring=@"{\"大表哥\":\"冷武橘\",\"三问\":\"薛某\"}";
    //1.json字符串转jsondata
    NSData *jsondata = [jsonstring dataUsingEncoding:NSUTF8StringEncoding];
    
   //2.json转OC对象
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsondata options:NSJSONReadingMutableContainers error:nil];
    NSLog(@"%@",dic);

相关文章

  • json相关学习

    三问公司后台afn返回了其中一个字典返回了一个json字符串的键值,在问我们群里问我们这几个人,突然感觉傻傻的分不...

  • json相关学习

    一、JSON数据格式简介 JSON(JavaScript Object Notation)是一种基于文本的数据交换...

  • Json 基础知识

    Json 基础知识,工作中用到,简单了解下 一、 json 相关概念 json 插队学习 json是什么? jso...

  • Powershell读写JSON文件

    读相关:ConvertFrom-Json 写相关:ConvertTo-Json

  • json相关

    解析json成struct,要注意在Unmarshal之前*struct必须初始化 time.Time字段在输出成...

  • jSON相关

    1、动态创建json 2、XML转JSON 2.1、引入需要脚本 GIT地址 2.2、demo 2.3结果 3、J...

  • json相关

    总结:[]-->List-->List{}-->LinkedHashMap-->_Interna...

  • JSON相关

    java中json的使用和解析 转载自:https://www.cnblogs.com/LearnAndGet/p...

  • JSON相关

    JS中生成和解析json 将字符串转化为JSON对象 JSON.parse( jsonstr ); 将JSON对象...

  • 2018-11-20

    今天,我们补充学习了文件操作里面的json文件的相关知识:1.什么是json数据json是一种数据格式,满足jso...

网友评论

      本文标题:json相关学习

      本文链接:https://www.haomeiwen.com/subject/zzudvhtx.html