• Json


     JSON 简介

    • JavaScript Object Notation (JavaScript的对象表示法).
    • JSON 本质上,就是一个"特殊格式"的字符串.
    • JSON 是网络上用来传输数据使用最广泛的数据格式,没有之一.JSONXML更轻量级.
    • JSON 出身草根,是 Javascript 的子集,专门负责描述数据的一种格式.
    • Javascript 是做网页开发使用的一种"脚本"语言.
    • Javascript & Java 没有任何关系!
    • 参考网站:http://www.w3cschool.cc
    • JSON具有自我描述性,更易理解.

       JSON 语法规则

    • 数据以 key/value 值对表示
    • 数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组
    • 提示 : JSON描述对象的语法格式很像字典.但是,不是字典,仅仅是键值对的形式很像.
       

    JSON 值

    • 数字(整数或浮点数)
    • 字符串(在双引号中)
    • 逻辑值(true 或 false)
    • 数组(在方括号中)
    • 对象(在花括号中)
    • null (空值)

    JSON描述对象

    • 新建工程,新建文件demo.json

    • 描述一个学生

    复制代码
    
    
    复制代码

    JSON解析_NSJSONSerialization

    • 问什么要解析JSON数据?
      • 因为从服务器获取到的JSON数据都是二进制的,客户端无法直接使用,就需要将二进制的JSON数据转换成客户端可以直接使用的OC对象.
      • 注意 : JSON形式的字符串客户端也无法直接使用.还是需要将其转换成OC对象.

    序列化 & 反序列化

    • 序列化: 在向服务器发送数据之前,将NSArry/NSDictionaryOC对象转换成二进制的过程.
    • 反序列化: 在从服务器接收到数据之后,将二进制数据转换成NSArray/NSDictionaryOC对象的过程.
    • JSON解析也叫做JSON反序列化

    JSON解析 & JSON反序列化

    • 加载demo.json文件中的JSON数据
    复制代码
    
    
    复制代码

    JSON解析 & JSON反序列化 的核心部分

    复制代码
    
    
    复制代码

    总结

    • 打印 json 类型的结果是 __NSCFDictionary,表示字典.
    • NSJSONSerialization 自动将二进制形式的JSON字符串解析成了字典.

    • JSON解析返回的对象是字典数组,是根据原始数据是由 {} 或者 [] 括起来决定的.

    • 如果JSON数据中有中文,输出的是经过Unicode编码的内容,无法识别.
    • 解析JSON最终的目的?

    JSON解析_options

     

    options参数说明

    • NSJSONReadingOptions
    选项说明
    NSJSONReadingMutableContainers = (1UL << 0) 容器可变
    NSJSONReadingMutableLeaves = (1UL << 1) 叶子可变
    NSJSONReadingAllowFragments = (1UL << 2) 顶级节点可以不是 NSArray 或者 NSDictionary,但必须是有效的JSON内容,比如字符串必须带引号
    • 在实际开发中,获得网络的数组或者字典之后,通常会做字典转模型!反序列化的结果是否可变并不重要

    NSJSONSerialization 类

    • 专门负责在 JSON 和 Foundation 对象直接转换的类
    • 可以转换成 JSON 的 Foundation 对象(即能够做JSON序列化的对象)需要具备以下条件:
      • 顶级节点是 NSArray 或者 NSDictionary
      • 所有的对象是 NSStringNSNumberNSArrayNSDictionary 或者 NSNull
      • 所有字典的 key 是 NSString
      • NSNumber 不是空或者无穷大
     

    JSON解析_转模型

    • 解析JSON最终的目的是字典转模型.
    • NSJSONSerialization 解析完JSON之后.打印 json 类型的结果是 __NSCFDictionary,表示字典.

    模型类声明

    复制代码
    
    
    复制代码

    模型类实现

    复制代码
    
    
    复制代码

    字典转模型

    复制代码
    
    
    复制代码

    常见的 JSON 解析第三方框架

  • 相关阅读:
    Qt代码覆盖率code coverage(VS版)
    Qt下Doxygen使用
    QMultiMap使用
    Qt在VS(Visual Studio)中使用
    Qt语言家(Qt Linguist)更新翻译报错Qt5.9MinGW
    Qt Creator插件Todo
    QWidget一生,从创建到销毁事件流
    Qt排序
    QTcpSocketQt使用Tcp通讯实现服务端和客户端
    Qt Creator子目录项目类似VS解决方案
  • 原文地址:https://www.cnblogs.com/6bu6/p/8903899.html
Copyright © 2020-2023  润新知