美文网首页
JSON解析

JSON解析

作者: 一个人的思考 | 来源:发表于2017-05-08 09:11 被阅读7次

iOS 数据交互模式

  • 主要有两种:json xml

一、Json

  • 什么是JSON

    • JSON是一种轻量级的数据格式,一般用于数据交互
    • 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外)
  • JSON的格式很像OC中的字典和数组

    • {"name" : "jack", "age" : 10}
    • {"names" : ["jack", "rose", "jim"]}
    • 标准JSON格式的注意点:key必须用双引号
  • 要想从JSON中挖掘出具体数据,得对JSON进行解析
    JSON 转换为 OC数据类型


二、json的解析方案

  • 在iOS中,JSON的常见解析方案有4种
    • 第三方框架:JSONKit、SBJson、TouchJSON(性能从左到右,越差)
    • 苹果原生(自带):NSJSONSerialization(性能最好)

  • NSJSONSerialization的常见方法

  • 格式示例:

    • JSON数据(NSData) -> OC对象(Foundation Object)
      • {} -> NSDictionary @{}
      • [] -> NSArray @[]
      • "jack" -> NSString @"jack"
      • 10 -> NSNumber @10
      • 10.5 -> NSNumber @10.5
      • true -> NSNumber @1
      • false -> NSNumber @0
      • null -> NSNull
  • JSON数据(NSData) -> OC对象(Foundation Object)

+ (id)JSONObjectWithData:(NSData *)data options:(NSJSONReadingOptions)opt error:(NSError **)error;
 参数 NSJSONReadingOptions
- NSJSONReadingMutableContainers = (1UL << 0)
    - 创建出来的数组和字典就是可变
- NSJSONReadingMutableLeaves = (1UL << 1)
    - 数组或者字典里面的字符串是可变的(暂时不太好用)
- NSJSONReadingAllowFragments
    - 允许解析出来的对象不是字典或者数组,比如直接是字符串或者NSNumber
  • OC对象(Foundation Object)-> JSON数据(NSData)
+ (NSData *)dataWithJSONObject:(id)obj options:(NSJSONWritingOptions)opt error:(NSError **)error;

三、Tips

  • 格式化服务器返回的JSON数据

  • 一般 json 返回的数据要么是字典,要么是数组,用第三方框架完成字典数组到模型的转换。

  • 字典转模型框架

  • Mantle

    • 所有模型都必须继承自MTModel
  • JSONModel

    • 所有模型都必须继承自JSONModel
  • MJExtension

    • 不需要强制继承任何其他类

设计框架需要考虑的问题

  • 侵入性
    • 侵入性大就意味着很难离开这个框架
  • 易用性
    • 比如少量代码实现N多功能
  • 扩展性
    • 很容易给这个框架增加新框架

相关文章

网友评论

      本文标题:JSON解析

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