FastJson与JsonCode性能大比拼

json编码与解码 json编码与解码json编码与解码json编码与解码json编码与解码json编码与解码json编码与解码json编码与解码 立即下载

        前面有同学对比了FastJson和JsonCode的性能,其认为在从Json字符串中取部分数值时,JsonCode的性能要远远优于FastJson,详细的内容请翻阅附录一。然而,正所谓“吾爱吾师,吾更爱真理”,抱着这样一种求真求实的心理,我对文章中的内容进行了探索,力求准确、符合事实。

         首先,我们还是应该谈谈鸡和蛋的问题,究竟是先有鸡后有蛋呢,还是先有蛋后有鸡呢?这似乎是一个世界难题。但毋庸质疑的是,肯定是先有json字符串,后有从字符串中提炼出部分数值。这就引申到另一个问题,我们的json字符串是如何来的呢?难道是开发人员一个字符一个字符拼出来的吗?显然,不是的。那我们一般是怎么拼装json字符串呢?我想大多数人应该是这样做的。

    /**
     * 使用fastJson转换为json字符串
     */
    public String parseObject2JsonUseFastJson() {
        List<User> userList = new ArrayList<User>();
        User user1 = new User();
        user1.setName("Test-张三");
        user1.setAge(10);
        userList.add(user1);
        User user2 = new User();
        user2.setName("Test-李四");
        user2.setAge(14);
        userList.add(user2);
        return JSON.toJSONString(userList);
    }

那么生成的json字符串是什么样子的呢?大概是下面这个样子吧。

[
    {
        "age":10,
        "name":"Test-张三"
    },
    {
        "age":14,
        "name":"Test-李四"
    }
]

似乎跟原作者要解析的字符串不一样哦。我们分别按照FastJson和JsonCode的方式对该字符串做一个解析,源代码如下所示:

public class JsonToolComparison {
    /**
     * 使用fastJson转换为json字符串
     */
    public String parseObject2JsonUseFastJson() {
        List<User> userList = new ArrayList<User>();
        User user1 = new User();
        user1.setName("Test-张三");
        user1.setAge(10);
        userList.add(user1);
        User user2 = new User();
        user2.setName("Test-李四");
        user2.setAge(14);
        userList.add(user2);
        return JSON.toJSONString(userList);
    }
    
    /**
     * 使用FastJson获取某个键所对应的值
     *
     * @return 键所对应的值
     */
    public String getValueUseFastJson(String json) {
        List<User> userList = JSON.parseArray(json, User.class);
        return userList.get(0).getName();
    }

    /**
     * 使用JsonCode获取某个键所对应的值
     *
     * @return 键所对应的值
     */
    public String getValueUseJsonCode(String json) {
        String name = JsonCode.calExpressionResult(json, "listget($,0).name");
        return name;
    }

    public static void main(String[] argv) {
        JsonToolComparison jsonToolComparison = new JsonToolComparison();
        String json = jsonToolComparison.parseObject2JsonUseFastJson();
        // 预热10万次数据
        int preTimes = 100000;
        while (preTimes-- != 0) {
            jsonToolComparison.getValueUseFastJson(json);
            jsonToolComparison.getValueUseJsonCode(json);
        }
        int times = 10000000;
        Stopwatch stopwatch = Stopwatch.createStarted();
        for (int i = 0; i < times; i++) {
            jsonToolComparison.getValueUseFastJson(json);
        }
        System.out.println("FastJson wastes:" + stopwatch.stop().elapsed(TimeUnit.MILLISECONDS) + "ms");
        stopwatch.reset().start();
        for (int i = 0; i < times; i++) {
            jsonToolComparison.getValueUseJsonCode(json);
        }
        System.out.println("JsonCode wastes:" + stopwatch.stop().elapsed(TimeUnit.MILLISECONDS) + "ms");
    }
}

一起来看下运行结果吧。

FastJson wastes:3590ms
JsonCode wastes:12607ms

结果不言而喻,FastJson似乎要比JsonCode强很多哦。

附录

附录一:什么?你还在使用fastjson,性能太差了

cjson-code json格式转换 ,主要是用于将字符串转换成json格式, 以及对json解析成相应的字符串 立即下载

相关推荐

Hyper-V虚拟机 安装 银河麒麟V10桌面版

如何在windows 11 Hyper-V 虚拟机中 安装 银河麒麟V10桌面版。

m0_46756112的博客 3418

JSONCode:一个强大的在线JSON工具,让数据管理更便捷

JSONCode:一个强大的在线JSON工具,让数据管理更便捷 项目简介 是一款免费且开源的在线JSON编辑、验证和美化工具,由开发者Lujinfeifly创建并维护。它提供了丰富的功能,包括实时预览、格式化、压缩、编码/解码,以及错误检测等,旨在帮助开发人员更高效地处理JSON数据。 技术分析 前端技术栈 JSONCode 使用现代前端框架React进行构建,利用其组件化特性实现界面的模块化,提...

gitblog_00069的博客 909

深入解析uncompyle6反编译pyc文件及常见错误修复指南

本文深入解析了使用uncompyle6工具反编译Python字节码文件(.pyc)的完整流程。针对实践中最高频的KeyError和Python版本范围限制两大错误,提供了详细的修复方案与步骤指南,并分享了处理复杂反编译结果的高级技巧与安全实践,是进行代码恢复、调试与分析的重要参考。

uber9的博客 534

fastjson和jsoncode的区别

jsoncode所需要引用的依赖: <dependency> <groupId>cn.miludeer</groupId> <artifactId>jsoncode</artifactId> <version>1.2.4</version> </dependenc...

suiyueran8023的博客 2717

手把手教你用GD32F407VET6的EXMC驱动外部SRAM,搞定大内存需求

本文详细介绍了如何使用GD32F407VET6的EXMC外设驱动外部SRAM,解决嵌入式开发中的大内存需求问题。通过硬件连接方案、EXMC时序配置与初始化步骤,以及软件集成与内存管理技巧,帮助开发者快速实现内存扩展。特别适合需要处理图形显示缓冲、音频处理等大内存场景的GD32F407开发者。

weixin_30752699的博客 345

《C语言小游戏之贪吃蛇程序代码》

//为广大编程游戏爱好者提供一个参考的游戏源代码#include&lt;stdio.h&gt;#include&lt;conio.h&gt;#include&lt;windows.h&gt;#include&lt;time.h&gt;#define framex 5#define framey 5#define wide 20#define high 20int i,j,a[2];//将光标移动到...

qq_42052821的博客 2万+

Json接口代码生成工具-Json2Code

将接口的json文件转化为代码的工具,支持如下语言:C#,C++,Dart,Go,Java,JavaScript,Kotlin,Objective-C,Python,Ruby,Rust,Swift,TypeScriptJson2Code主要是为了解决前端在拿到后端swagger、postman等工具导出的接口描述文件的时候,大部分工作都是对着文档来写自己请求处理代码,比较的枯燥而且容易出错。自动生成代码的好处是能够快速的应对后端修改代码,类型出错,文档和接口数据对不上的时候可以即时知晓软件介绍。

weixin_43611639的博客 1219

工厂自动化布线实战:从功率计算到线槽布局的完整避坑指南

本文详细介绍了工厂自动化布线的实战经验,从功率计算到线槽布局的完整避坑指南。通过三步计算法确定线径需求,强调电压降控制的重要性,并分享线槽布局的50%法则和强弱电分离技巧。特别针对移动设备和多芯信号线提供专业解决方案,帮助工程师避免常见错误,提升布线效率和质量。

weixin_29266007的博客 350

json_code option 参数解析

#每次只能执行一条命令 要不然 JSON_UNESCAPED_SLASHES 会失效 $a = [ 123, "abc", "呵呵", "https://www.baidu.com" ]; var_dump(json_encode($a)); #普通转意 var_dump(json_encode($a,JSON_HEX_QUOT)); var_dump(json_encode($a,JSON_HEX_TAG)); var_dump(json_encode($a,JSON.

smile121621的博客 476

【PHP面试题29】什么是PHP-FPM?它与PHP和Nginx有什么关系

PHP面试专区。计划将全覆盖PHP开发领域所有的面试题,对标资深工程师/架构师序列,欢迎大家提前关注锁定。PHP-FPM(FastCGI Process Manager)是PHP的FastCGI进程管理器,它是PHP 5.3.3及更高版本的一部分。它通过为每个请求分配一个独立的进程来提高PHP脚本的执行效率和性能,并且可以与Web服务器(如Nginx、Apache等)进行通信。PHP-FPM是PHP的FastCGI进程管理器,它通过为每个请求分配一个独立的进程来提高PHP脚本的执行效率和性能。

黑夜开发者的博客 1476

VMware16虚拟机:安装Windows10系统---超详细教程

VMware16虚拟机:安装Windows10系统---超详细教程

MQ0522的博客 3万+

json--code

/// // <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <sc

weixin_51847874的博客 814

CUDA编程00 - 配置CUDA开发环境

第一步:在一台装有Nvidia显卡和驱动的机器上,用nvidia-smi命令查看显卡所支持cuda版本。安装时按提示下一步即可,安装完成用 nvcc -V 命令检查是否成功。第二步: 到Nvidia官网下载CUDA Toolkit并安装,第三步:编写HelloWorld。

GPU全栈博主 1359

fastjson java 字段排序_什么?你还在使用fastjson,性能太差了

在现代的整个互联网的交互通信中,json 表达的简洁性和文本化的特性给我们带来很大的操作便捷性。所以大量的通信都使用这种表达方式。但是对于 json 方式,大家有比较多的解析方式,其中阿里开源的 fastjson 相信是我们大家使用最多的一种。但是我们现在有一种更好的解析方式 ----jsoncode,maven 包引用是这样的:<dependency> <groupId>...

weixin_30232751的博客 120

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

什么?你还在使用fastjson,性能太差了

在现代的整个互联网的交互通信中,json 表达的简洁性和文本化的特性给我们带来很大的操作便捷性。所以大量的通信都使用这种表达方式。 但是对于 json 方式,大家有比较多的解析方式,其中阿里开源的 fastjson 相信是我们大家使用最多的一种。但是我们现在有一种更好的解析方式 ----jsoncode,maven 包引用是这样的: <dependency> <g...

灵熙云工作室 1293

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

纳尼?你居然还在使用fastjson,性能太差了,这个新出的秒杀fastjson

作者:陆小飞 链接:https://www.jianshu.com/p/eeba48f1e563在现代的整个互联网的交互通信中,json表达的简洁性和文...

emprere的博客 300

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

fastjson配置时间_什么?你还在使用fastjson,性能太差了

在现代的整个互联网的交互通信中,json 表达的简洁性和文本化的特性给我们带来很大的操作便捷性。所以大量的通信都使用这种表达方式。但是对于 json 方式,大家有比较多的解析方式,其中阿里开源的 fastjson 相信是我们大家使用最多的一种。但是我们现在有一种更好的解析方式 ----jsoncode,maven 包引用是这样的:<dependency> <groupId>...

weixin_35825858的博客 275

java+fastjsongithub_你还在使用fastjson,性能太差了

陆小飞https://www.jianshu.com/p/eeba48f1e563在现代的整个互联网的交互通信中,json 表达的简洁性和文本化的特性给我们带来很大的操作便捷性。所以大量的通信都使用这种表达方式。但是对于 json 方式,大家有比较多的解析方式,其中阿里开源的 fastjson 相信是我们大家使用最多的一种。但是我们现在有一种更好的解析方式 —-jsoncode,maven 包引用...

weixin_34348050的博客 468

各种JSON比较(josn-lib,jackson,gson,fastjson)

一 、各个JSON技术的简介和优劣   1.json-lib         json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括commons-beanutils.jar,commons-collections.jar,commons-lang.jar,commons-logging.jar,ezmorph-1.0.6.jar...

越来越好ing的博客 2365

HTTP状态码

1xx(信息,服务器收到请求,需要请求者继续执行操作) 100 等待用户继续请求 101 切换协议(只能切换到更高级的协议) 2xx(成功,操作被成功接收并处理) 200 请求成功 201 成功请求并创建了新的资源 202 已经接受请求,但未处理完成 203 请求成功,但返回的meta信息不在原始的服务器,而是一个副本 204 服务器成功处理,但未返回内容 205 服务器处理成功,用户终端(例如:浏览器)应重置文档视图 20

小森呀 384

FastJson应用与高性能优化

FastJson是阿里巴巴集团开源的一款高性能、功能强大且全面兼容Java平台的JSON处理库。它具有序列化和反序列化JSON数据的各种方式支持自定义序列化过程以及编写类型转换器等功能。FastJson被广泛应用于各个领域,例如RESTful服务、SOA架构、消息服务、分布式事务等。禁用循环引用检测,可以使用 SerializerFeature.DisableCircularReferenceDetect 属性。禁用字段排序,可以使用 SerializerFeature.SortField 属性。

BXA 2362
上一篇: Ubuntu安装Jenkins报错The certificate is NOT trusted.
下一篇: HomeStead中MySQL的默认账号密码
心潮逐浪
博客等级 码龄15年 5粉丝 49原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值