常见的 JSON 解析第三方框架

  • JSONKit(最快)
  • SBJson
  • TouchJSON

以上三个框架的性能依次降低!

介绍 JSONKit 第三方框架的目的

  1. JSON 的解析并不是表面上那么简单
  2. 官方说 JSONKit 比苹果原生的 JSON 解析速度快!
  3. JSONKit 在很多老的项目中仍然在使用
  4. JSONKit 已经在 2012 年停止更新,适用于 iOS 5.0 以前的版本开发使用
  5. 了解 ARC & MRC 混编的方法

步骤

  1. 下载框架 https://github.com/johnezang/JSONKit
  2. 导入框架文件
    • JSONKit.h
    • JSONKit.m
  3. 设置 MRC 标记
    • 选择"项目"-"Build Phases"-"Compile Sources"
    • 找到 JSONKit.m 并且在 Compiler Flags 中添加 -fno-objc-arc
      • 可以告诉编译器,编译 JSONKit.m 时不使用 ARC
  4. 修改错误
    • 利用自动修复功能,修改两处 isa 的错误
  5. 反序列化
id result = [[JSONDecoder decoder] objectWithData:data];

性能测试

static int largeNumber = 100 * 1000;

- (void)jsonKitDemo {
NSString *urlString = @"http://localhost/demo.json";
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { NSLog(@"start");
CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
for (int i = 0; i < largeNumber; ++i) {
id result = [[JSONDecoder decoder] objectWithData:data];
}
NSLog(@"%f", CFAbsoluteTimeGetCurrent() - start); // 数据处理代码...
}];
}

测试结果:

  • 时间:3.24s
  • 内存:4.74G

苹果原生框架

  • 时间:0.18s
  • 内存:几乎不变

JSON 解析第三方框架的更多相关文章

  1. XML与JSON解析

    [XML简介] XML在线校验工具: http://tool.oschina.net/codeformat/xml 可扩展标记语言(EXtensible Markup Language) 一种标记语言 ...

  2. SpringBoot 默认json解析器详解和字段序列化自定义

    前言 在我们开发项目API接口的时候,一些没有数据的字段会默认返回NULL,数字类型也会是NULL,这个时候前端希望字符串能够统一返回空字符,数字默认返回0,那我们就需要自定义json序列化处理 Sp ...

  3. Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)

    最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...

  4. 移动架构-json解析框架

    JSON在现在数据传输中占据着重要地位,相比于xml,其解析和构成都要简单很多,第三方的解析框架也不胜枚举,这里之所以要自定义一个json解析框架,一方面是更好的了解json解析过程,另一方面是有时候 ...

  5. 2016 - 1 - 23 json转模型 常用的第三方框架

    一: 三个常用的框架 1. Mantle - 所有模型必须继承MTModel 2. JSONModel - 所有模型必须继承JSONModel 3.MJExtension - 不需要继承任何东西. - ...

  6. Spring Boot默认的JSON解析框架设置

    方案一:启动类继承WebMvcConfigurerAdapter,覆盖方法configureMessageConverters ... @SpringBootApplication public cl ...

  7. 十七、springboot配置FastJson为Spring Boot默认JSON解析框架

    前提 springboot默认自带json解析框架,默认使用jackson,如果使用fastjson,可以按照下列方式配置使用 1.引入fastjson依赖库: maven: <dependen ...

  8. springboot使用fastJson作为json解析框架

    springboot使用fastJson作为json解析框架 springboot默认自带json解析框架,默认使用jackson,如果使用fastjson,可以按照下列方式配置使用 〇.搭建spri ...

  9. Json解析工具Jackson(使用注解)--jackson框架自定义的一些json解析注解

    Json解析工具Jackson(使用注解)--jackson框架自定义的一些json解析注解 @JsonIgnoreProperties 此注解是类注解,作用是json序列化时将Javabean中的一 ...

随机推荐

  1. 【思路题】【多校第一场】【1001.OO’s Sequence】

    题目大意: 给你一个序列A,f(l,r) 表示 在[l,r]中 的Ai 对于每一个数Aj 都有 Ai%Aj!=0  的数目(  i!=j  ) 卡了一段时间..... 题解 简单题 定义两个数组L[i ...

  2. Web App 图片上传编辑器

    使用cropper.jqueryUpload插件.Jquery.src-dataurl-canvas-blob文件. @{ ViewBag.Title = "更新头像"; Layo ...

  3. Mongoose的模糊查询

    var Commidity = require("./Model/commiditiesModel"); function search(response,request,key) ...

  4. GET & POST 登录

    GET 登录 @property(nonatomic,assign)long  long hasReceivedContentLength; - (void)getLogin { NSString * ...

  5. zoj 1200 Mining

    这道题被划到了动态规划里面去了,结果就是一道模拟题,懒了一点,直接用stl的优先队列,重载了一下运算符,写的时候保证只能一个在采,因为如果需要的采的次数比可以生产的次数少,那么生产的次数等于需要采的次 ...

  6. G - 密码 kmp、贪心、manachar等等等等

    G - 密码 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit Status ...

  7. ButterKnife你需要知道的点

    ButterKnife,这个方便findViewById而使用的库,无数的应用在使用它,以注解来实现的他,对应用的性能影响几乎可以忽略,可以放心使用. 使用: compile 'com.jakewha ...

  8. The port Command

    The port Command help: port help selfupdate selfupdate: sudo port selfupdate search: port search tft ...

  9. Android动画的深入分析

    一.AnimationDrawable的使用 详见:Drawable类及XMLDrawable的使用 补充:通过Animation的setAnimationListener()可以给View动画添加监 ...

  10. 如何实现button像a标签一样跳转页面

    这个实现起来很简单,如下: <a href="{% url 'cms:add' %}"> <button class="btn btn-default& ...