常见的 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. 《JavaScript 闯关记》之数组

    数组是值的有序集合.每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引. JavaScript 数组是无类型的,数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型 ...

  2. nodejs 计算内存使用率

    //计算内存使用率 function calcMem(){ let mem_total = os.totalmem(), mem_free = os.freemem(), mem_used = mem ...

  3. Android 学习笔记(一)

    环境配置在网上搜索的一大堆. 这里简单发几个连接. http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html http://jing ...

  4. C# Winform对文件夹的权限判断及处理

    WindowsIdentity类可以获取当前执行者的身份信息 /// <summary> /// 递归搜索文件方法 /// </summary> /// <param n ...

  5. 2Sum,3Sum,4Sum,kSum,3Sum Closest系列

    1).2sum 1.题意:找出数组中和为target的所有数对 2.思路:排序数组,然后用两个指针i.j,一前一后,计算两个指针所指内容的和与target的关系,如果小于target,i右移,如果大于 ...

  6. 【搜索引擎Jediael开发笔记3】使用HtmlParser提取网页中的链接

    关于HtmpParser的基本内容请见 HtmlParser基础教程 本文示例用于提取HTML文件中的链接 package org.ljh.search.html; import java.util. ...

  7. Fragment之一:Fragment入门

    参考自张泽华视频 Fragment是自Android3.0后引入的特性,主要用于在不同的屏幕尺寸中展现不同的内容. Fragment必须被嵌入Activity中使用,总是作为Activity的组成部分 ...

  8. SSAS父子层次结构的增强-UnaryOperatorColumn属性

    上次我有讲到自定义汇总,这次的内容跟上次的差不多也算是自定义汇总,实现的方式不同而已!使用的是UnaryOperatorColumn属性. 这个属性说明: 一元运算符用于将成员自定义汇总到父级,汇总运 ...

  9. KeybMap 键盘映射工具更新至 V1.5(修订)

    KeybMap 更新至 V1.5,主要是增加了对一些多媒体键定义修改功能,也可以将任意一键定义为打开指定的程序. 3月9日略做修订. http://www.mympc.org/down/1/2005- ...

  10. Windows Components Reference(Windows组件参考)

    原文 http://www.msfn.org/board/topic/127287-windows-components-reference/ green means the component na ...