测试Java中json字符串转map的效率,

1,使用的json字符串:

40个键值对:50个键值对 = 1:1 = 66986 x 2 = 133972个json,

每个json的key字符串长度=8,且key随机取自于一个800长度的字符串数组,

这个字符串数组中的每个字符串,也是随机生成的,从[a-z,A-Z,0-9]里面随机取8个字符为一个字符串,生成800个到这个数组。

这个json字符串就是一层的,没有再多层的。

2,测试代码

    /*** 测试json字符串转map的效率,* 40个键值对:50个键值对 = 1:1 = 66986 x 2 = 133972个json*/private static void testJson(Scanner scanner) {List<String> jsonField = getJsonField(scanner);testJson2Map(jsonField);}/*** 测试json字符串转map的效率*/private static void testJson2Map(List<String> json) {int times = 10;fastJson(json, times);//fastJson2(json, times);gson(json, times);//gson2(json, times);jackson(json, times);}/*** jsonField使用如下方式转json*/private static void fastJson(List<String> json, int times) {long a = System.currentTimeMillis();while (times > 0) {json.forEach(s -> JSON.parseObject(s).get("xxuEeTg5"));times--;}System.out.println("fastJson 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");}/*** 确认过数据之后,json是只有一层的*/private static void fastJson2(List<String> json, int times) {long a = System.currentTimeMillis();while (times > 0) {json.forEach(s -> JSON.toJavaObject(JSONObject.parseObject(s), Map.class).get("xxuEeTg5"));times--;}System.out.println("fastJson2 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");}private static void jackson(List<String> json, int times) {long a = System.currentTimeMillis();while (times > 0) {json.forEach(s->{ObjectMapper mapper = new ObjectMapper();try {Map map = mapper.readValue(s, Map.class);map.get("xxuEeTg5");} catch (IOException e) {e.printStackTrace();}});times--;}System.out.println("执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");}private static void gson(List<String> json, int times) {long a = System.currentTimeMillis();while (times > 0) {json.forEach(s -> {Gson gson = new Gson();Map maps = gson.fromJson(s, new TypeToken<Map>() {}.getType());maps.get("xxuEeTg5");});times--;}System.out.println("gson 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");}private static void gson2(List<String> json, int times) {long a = System.currentTimeMillis();while (times > 0) {json.forEach(s -> {Gson gson = new Gson();Map maps = gson.fromJson(s, Map.class);maps.get("xxuEeTg5");});times--;}System.out.println("gson2 执行耗时 : " + (System.currentTimeMillis() - a) / 1000f + " 秒 ");}

测试结果:

测试处理130w的json字符串转Java的map。

发现,果然如传说的那样,fastjson就是快。

使用的fastjson的版本是1.2.56,差不多最新的了

我代码里面带2的方法,是同一个jar可能有不同的实现方式,想看看这个不同实现方式是否会影响效率,测试完之后,发现这个变化对结果的影响几乎没有。

但是,这个json转map还是慢呀。。。。

fastjson-常见的问题--官方回复--github网址,中文的。

我这个需求是要处理大量的json字符串,不是说全部合并成一个超大的字符串,是n多个小的字符串,要把这b多的碎片的(每个100个k v 的json)json字符串,转成map处理。

注意,我这个测试的使用常见。

Java JSON转Map fastjson、gson、jackson、效率测试对比相关推荐

  1. java json开发包 fastjson 简介

    Json是一种轻量级的数据交换格式,采用一种"键:值"对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言.在使用Java做Web开发时,不可避免 ...

  2. javabean与json转换(fastjson与jackson两个版本)

    [README] 本文演示了 javabean与json转换的开发方式: 要想 javabean的属性名 与 json的字段名不一致,也是可以转换的: 之前需要引入 ali.fastjson < ...

  3. Java json转Map,转bean,转Listbean

    引用jackson /** * json转Map,转bean,转List<bean> by http://blog.csdn.net/21aspnet/ * 需要jackjson jar包 ...

  4. mysql 分区 效率_【MySQL】MySQL分区表效率测试对比

    这一段时间对数据库优化方面的认识深有体会,就以MySQL为例测试一下分区表的性能 MySQL5.0好像不支持分区,我用的5.5版本,测试是否支持可通过以下方法: SHOW VARIABLES LIKE ...

  5. java json转map数组_java将 json数组转map

    展开全部 首先你的 [{"key":"1"},{"key":"2"}] 是个 json 数组格式 如果626169647 ...

  6. java json转map

    1. 单 示例: String str = "{\"C\":\"1006\",\"N\":\"玫瑰\"}&qu ...

  7. java json 多余属性,fastjson支持JSON字符串解析到指定类型的JavaBean时的多余属性么?...

    我给你的示例是放到全局ParserConfig的, 你可以每次解析的时候,在JSON.parseObject的参数里传递自己的ParserConfig,以达到只控制部分拦截的功能. 如果parseOb ...

  8. Java Geometry计算轨迹与围栏交集效率测试及异常处理

    本文涉及异常问题比较普遍:https://cn.bing.com/search?q=found+non-noded+intersection+between&qs=n&form=QBR ...

  9. mssql linux性能,MSSQL 的Top 和 MAX 效率测试

    环境: MSSQL 2008, 都在没有使用缓存的情况下面执行 表中有8W 条记录 分类1有134条记录 分别测试了3个语句 -- A select 字段1 from 表1 WHERE Ftype=' ...

最新文章

  1. sql数据库打包部署安装
  2. 【图论技巧】点边转化(拆点和拆边)
  3. 如果往错误的NEO地址转账会发生什么
  4. Linux下SSH命令使用方法详解
  5. 边缘计算 — 与 5G
  6. zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法
  7. 常见的反爬措施:UA反爬和Cookie反爬
  8. 知识计算机硬件 教学设计,“计算机硬件系统”教学设计
  9. 一次由于网卡流量跑满引起的服务器丢包总结(sar命令排查)
  10. linux查看usb文件,linux下查看usb个数
  11. 移动应用广告盈利-KeyMob移动广告聚合平台
  12. [转载] PyTorch: 序列到序列模型(Seq2Seq)实现机器翻译实战
  13. 爬取mzi.com妹子图片网站(requests库)
  14. 八个常用的数据分析方法论
  15. Java io和nio的应用场景_java中IO和NIO的区别和适用场景
  16. 查找算法-跳跃表(SkipList)入门及复杂度分析
  17. Unity 面积测量
  18. Java高级程序员必备:高性能计数器及Striped64和LongAdder
  19. JavaFX入门(一):我的第一个JavaFX程序
  20. 杨卫华:新浪微博的架构发展历程(转)

热门文章

  1. 信奥赛一本通1099第n小的质数
  2. eclipse2022.6版本新建maven项目时pom报错:Cannot find the declaration of element ‘project‘. pom.xml
  3. idea新手使用教程总结
  4. 崩坏3 ios 转 android,崩坏3三周年安卓与IOS是否可以互通
  5. listview上拉加载上一页 下拉加载下一页共通处理
  6. Anaconda安装使用以及Pycharm教程
  7. JS三元表达式与”||“的关系
  8. 如何跟聊天机器人一起绘画?
  9. OSChina 周五乱弹 ——程序员的年龄天花板到底是多少岁?
  10. 从EasyStack客户案例,看开源云计算发展之路