Jackson优化使用实例
JSON的三种处理方式 Jackson提供了三种可选的JSON处理方法(一种方式及其两个变型):
流式 API:(也称为"增量分析/生成") 读取和写入 JSON 内容作为离散事件。
org.codehaus.jackson.JsonParser 读, org.codehaus.jackson.JsonGenerator 写。
StAX API 的激励。
树模型 :提供一个 JSON 文档可变内存树的表示形式。
org.codehaus.jackson.map.ObjectMapper 生成树 ;树组成 JsonNode 节点集。
- 树模型类似于 XML DOM。
数据绑定: JSON和POJO相互转换,基于属性访问器规约或注解。
有 两种变体: 简单 和 完整 的数据绑定:
简单数据绑定: 是指从Java Map、List、String、Numbers、Boolean和空值进行转换
完整数据绑定 :是指从任何 Java bean 类型 (及上文所述的"简单"类型) 进行转换
org.codehaus.jackson.map.ObjectMapper 对两个变种,进行编组(marshalling )处理 (写入 JSON) 和反编组(unmarshalling ,读 JSON)。
JAXB激励下的基于注释的 (代码优先)变种。
从使用的角度来看,总结这些3 种方法的用法如下:
额,直接贴出所有代码吧,该说的都在代码中了
- package com.wujintao.json;
- import java.io.IOException;
- import java.util.Date;
- import org.codehaus.jackson.JsonGenerationException;
- import org.codehaus.jackson.map.JsonMappingException;
- import org.codehaus.jackson.map.ObjectMapper;
- import org.codehaus.jackson.map.ObjectReader;
- import org.codehaus.jackson.map.ObjectWriter;
- import org.junit.Test;
- /**
- * http://wiki.fasterxml.com/JacksonDownload
- * http://wiki.fasterxml.com/JacksonInFiveMinutes
- * http://wiki.fasterxml.com/JacksonBestPracticesPerformance
- * http://jackson.codehaus.org/1.8.8/javadoc/index.html
- * http://wiki.fasterxml.com/ObjectReader
- * https://github.com/FasterXML/jackson-docs/wiki/ObjectWriter
- * jars:jackson-core-lgpl-1.8.10.jar,jackson-mapper-lgpl-1.8.10.jar
- *
- * 1.实践结果,无论是哪种形式的转换,Jackson > Gson > Json-lib。Jackson的处理能力甚至高出Json-lib有10倍左右
- * 2.JSON-lib似乎已经停止更新,最新的版本也是基于JDK15,而Jackson的社区则较为活跃
- * 3.高并发情况下jackson表现尤为优越,内存占用甚少,json-lib会占用很多内存
- *
- */
- public class TestCase {
- @Test
- public void test() throws JsonGenerationException, JsonMappingException,
- IOException {
- long start = new Date().getTime();
- ObjectMapper mm = new ObjectMapper(); // can reuse, share
- Person pp = new Person();
- pp.setAdd("beijing");
- pp.setAge(11);
- pp.setSalary(1.1);
- pp.setSex('男');
- String jj = mm.writeValueAsString(pp);
- System.out.println(jj);
- Person pp2 = mm.readValue(jj, Person.class);
- System.out.println(pp2);
- long end = new Date().getTime();
- System.out.println("using ObjectMapper cost:"+(end-start)+"ms");
- System.out.println("=================================");
- // 7. Prefer ObjectReader/ObjectWriter over ObjectMapper
- // Although the main reason to prefer these objects is thread-safety
- // (and thus correctness),there may be performance benefits as well
- // 8.When reading a root-level sequence of POJOs,
- // readValues() method of ObjectReader can be much more efficient
- // than doing explicit iteration using ObjectMapper.readValue() method.
- long start2 = new Date().getTime();
- ObjectMapper mapper = new ObjectMapper();
- Person person = new Person();
- person.setAdd("beijing");
- person.setAge(11);
- person.setSalary(1.1);
- person.setSex('男');
- ObjectWriter writer = mapper.viewWriter(Person.class);
- String json = writer.writeValueAsString(person);
- System.out.println(json);
- // we'll be reading instances of MyBean
- ObjectReader reader = mapper.reader(Person.class);
- // and then do other configuration, if any, and read:
- Person result = reader.readValue(json);
- System.out.println(result);
- long end2 = new Date().getTime();
- System.out.println("using ObjectReader/ObjectWriter cost:"+(end2-start2)+"ms");
- //官网建议使用ObjectReader/ObjectWriter
- }
- //还有fast-json、Genson 等没做研究
- }
Jackson优化使用实例的更多相关文章
- 第十七章——配置SQLServer(4)——优化SQLServer实例的配置
原文:第十七章--配置SQLServer(4)--优化SQLServer实例的配置 前言: Sp_configure 可以用于管理和优化SQLServer资源,而且绝大部分配置都可以使用SQLServ ...
- Jackson的用法实例分析
这篇文章主要介绍了Jackson的用法实例分析,用于处理Java的json格式数据非常实用,需要的朋友可以参考下 通俗的来说,Jackson是一个 Java 用来处理 JSON 格式数据的类库,其性能 ...
- Nginx中FastCGI参数的优化配置实例
在配置完成Nginx+FastCGI之后,为了保证Nginx下PHP环境的高速稳定运行,需要添加一些FastCGI优化指令.下面给出一个优化实例,将下面代码添加到Nginx主配置文件中的HTTP层级. ...
- IOS第七天(4:UiTableView 数据的显示优化重复实例和tableFooterView和tableHeaderView)
//加上头部 和底部 - (void)viewDidLoad { [super viewDidLoad]; [self tableView]; // 设置行高 self.tableView.rowHe ...
- memcached优化方案实例
<?php //引入memcached require_once '../class/memcached.class.php'; //连接MySQL $link = mysqli_connect ...
- Java-Runoob-高级教程-实例-字符串:12. Java 实例 - 字符串优化
ylbtech-Java-Runoob-高级教程-实例-字符串:12. Java 实例 - 字符串优化 1.返回顶部 1. Java 实例 - 字符串优化 Java 实例 以下实例演示了通过 Str ...
- MySQL学习笔记十五:优化(2)
一.数据库性能评测关键指标 1.IOPS:每秒处理的IO请求次数,这跟磁盘硬件相关,DBA不能左右,但推荐使用SSD. 2.QPS:每秒查询次数,可以使用show status或mysqladmin ...
- Nginx中FastCGI配置优化
FastCGI: FastCGI是从CGI发展改进而来的.传统CGI接口方式的主要缺点是性能很差,因为每次HTTP服务器遇到动态程序时都需要重新启动脚本解析器来执行解析,然后结果被返回给HTTP服务器 ...
- Oracle优化的几个简单步骤
数据库优化的讨论可以说是一个永恒的主题.资深的Oracle优化人员通常会要求提出性能问题的人对数据库做一个statspack,贴出数据库配置等等.还有的人认为要抓出执行最慢的语句来进行优化.但实际情况 ...
随机推荐
- 2020年Java基础高频面试题汇总(1.4W字详细解析)
1. Java语言有哪些特点 (1)简单易学.有丰富的类库 (2)面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高) (3)与平台无关性(JVM是Java跨平台使用的根本) (4)可靠安全 ...
- JavaScript 模式》读书笔记(4)— 函数2
这篇,我们仍旧继续学习函数. 二.回调模式 函数都是对象,这表示它们可以作为参数传递给其它函数. function writeCode(callback) { // 执行一些事务... callbac ...
- 还是只使用console.log()进行调试?好吧,其实还有更多。
在浏览器控制台中打印消息无疑可以拯救所有开发人员. console.log()消息就像您的大多数疾病的药,同时调试了代码中的一些有线问题. 那里的大多数开发人员都喜欢— 让我们在浏览器中打印消息以了解 ...
- 01背包模板题 hdu2602 Bonecollector
由于数组的滚动过程中当前值(i,j)的更新需要用到上一层的(i-1,j-wi)的值,所以在更新当前的j之前不能更新上一层的j之前的值,故01背包是从后向前更新的(重量取值是从大到小的). 代码如下: ...
- wr720n v4 折腾笔记(三):网络配置与扩充USB
0x01 前言 网络配置比较简单,但是USB拓展就麻烦许多了,这里由于overlay的内存分配问题导致软件安装失败,这里找到了一种方法就是直接从uboot刷入南浦月大神的wr720n的openwrt固 ...
- Android | 教你如何用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序
Android | 教你如何用华为HMS MLKit 图像分割 SDK开发一个证件照DIY小程序 引子 上期给大家介绍了如何使用如何用华为HMS MLKit SDK 三十分钟在安卓上开发一个微笑抓 ...
- Hbase 整合 Hadoop 的数据迁移
上篇文章说了 Hbase 的基础架构,都是比较理论的知识,最近我也一直在搞 Hbase 的数据迁移, 今天就来一篇实战型的,把最近一段时间的 Hbase 整合 Hadoop 的基础知识在梳理一遍,毕竟 ...
- mac主机无法访问虚拟机中的Ubuntu运行的web服务
第一点: 检查主机和虚拟机之间是否连通: 在mac主机中ping 虚拟机ip 虚拟机ip可以在虚拟机命令行中输入 ifconfig查看 第二点: 如果不能ping通,改变虚拟机的网络连接方式为:桥接模 ...
- 200行PYTHON代码实现贪吃蛇
200行Python代码实现贪吃蛇 话不多说,最后会给出全部的代码,也可以从这里Fork,正文开始: 目前实现的功能列表: 贪吃蛇的控制,通过上下左右方向键: 触碰到边缘.墙壁.自身则游戏结束: 接触 ...
- CodeForces 190C STL
Portal: http://codeforces.com/problemset/problem/190/C 一道卡输入输出的蛋疼题 题意:给你一个由pair和int所组成的沙茶字符串(最大含有1e5 ...