ava的开源类库选择比较软件开发

有效选择七个关于Java的JSON开源类库

April 4, 2014 By Constantin Marian Alin

翻译:无若

简介

JSON是JavaScript Object Notation的缩写,是一种轻量级的数据交换形式,是一种XML的替代方案,而且比XML更小,更快而且更易于解析。因为JSON描述对象的时候使用的是JavaScript语法,它是语言和平台独立的,并且这些年许多JSON的解析器和类库被开发出来。在这篇文章中,我们将会展示7种Java JSON类库。基本上,我们将会试着把Java对象转换JSON格式并且存储到文件,并且反向操作,读JSON文件转换成一个对象。为了让文章更有意义,我们将会测量每一种JSON类库在不同情况下的处理速度。

(一)类库介绍及其使用

(1)使用Jackson类库

第一个介绍的是Jackson类库,Jackson库是一个“旨在为开发者提供更快,更正确,更轻量级,更符合人性思维” 的类库。Jackson为处理JSON格式提供了三种模型的处理方法。

1、流式API或者增量解析/产生( incremental parsing/generation):读写JSON内容被作为离散的事件。

2、树模型:提供一个可变内存树表示JSON文档。

3、数据绑定(Data binding):实现JSON与POJO(简单的Java对象(Plain Old Java Object))的转换

我们感兴趣的是Java对象与JSON的转换,因此,我们将集中于第三种处理方法。首先我们需要下载Jackson。Jackson的核心功能使用三个类库,分别是jackson-core-2.3.1, jackson-databind-2.3.1和jackson-annotations-2.3.1; 三个类库的下载都来自于Maven仓库,给出地址:

现在,让我们来工作吧,为了从Java对象中获得一个一个复杂的JSON对象,我们将会使用下面的类去构造一个对象。同样的Java对象将会被用于这篇文章的所有的类库中。

上面的Java对象转换成JSON格式是下面这样的。

现在,让我们来看看怎么样把Java对象转换成JSON并且写入文件。Jackson使用一个ObjectMapper功能,我们第一步要做的是:

然后,我们将会使用这个ObjectMapper直接写入值到文件。

现在,我们有了一个JSON文件,但是,怎么样转回Java对象呢?我们可以这样做:

从上面的例子我们知道了JSON和Java对象的相互转换,在try-catch中总共也就两行,看起来不错是吧,但是它快么?我们将会在后面的文章中揭晓。

(2)使用 Google-Gson类库

1)提供简单的toJson()方法和fromJson()去实现相互转换。

2)可以从JSON中转换出之前存在的不可改变的对象。

3)扩展提供了Java泛型。

4)支持任意复杂的对象。

JSON转换成Java对象:

上面就是我们所有需要做的,接下来我们可以对 jsonObj 作进一步处理。当调用JSON操作的时候,因为Gson的实例化对象没有维持任何状态,我们可以重复使用一个对象为多个JSON序列化和反序列化操作。

(3)使用JSON-lib类库

同样,让我们来把Java对象转成JSON。

JSON转Java对象

(4)使用Flexjson类库

JSON转Java对象

简单有效是吧!

(5)使用Json-io类库

它不需要其他依赖。

例子:Java对象转JSON

JSON转Java对象

(6)使用Genson类库

例子:Java对象转JSON

JSON转Java对象

(7)使用JSONiJ类库

它不需要任何依赖。

例子:Java对象转JSON

JSON转Java 对象

看起来JSONiJ需要的代码多些,性能怎么样,我们看下面。

(二)基准测试

现在我们要来看看性能了,测试硬件配置:Intel Core i5 laptop with 2.50GHz 单通道DDR3 RAM 4G,软件配置:Windows 7 Ultimate 64-bit SP1

基准测试运行一样的虚拟机(JVM),在测试之前,每一个类库都有一个热身,去限制内存使用的造成的影响,用一个显式调用垃圾收集器。下面的图表代表的是序列化和反序列化JSON数据以毫秒级使用50次迭代和10次热身(warm-up)迭代的平均的时间。

(译者注:红色为序列化(Java对象转JSON),蓝色为反序列化(JSON转Java对象))

上面的图表显示,Flexjson序列化小数据时是最快的,而JSON-lib是最慢的。反序列化的时候,Gson最快,JSON-lib还是最慢的。

下面的图表代表的是我们的数据在287kb时,序列化和反序列化所花费的平均时间。

这张图显示,我们对少量的数据操作时,最快的是Gson ,之后的是 Genson和Flexjson。

当变成大数据时,结果变得很不一样。在下面的图表中,使用的是108Mb的数据,在序列化的时候,Jackson变成了最快的,Flexjson变成第二快。在反序列化的时候,JSON-lib变成了最快的,之前在处理小数据时,它是最慢的,第二快的是Jackson。

下面的图表,显示的是处理更大一点的数据时,我们应该使用Jackson和JSON-lib。

另外一个重要的测试是关于.jar包的大小。这对于移动端的开发很重要,我们从下图中看到,json-io最小,之后依次是Flexjson和JSONiJ:

(三)结论

在这篇文章中,我们知道了七种方式来实现Java对象和JSON之间的互相转换。以及哪一个类库更快,哪一个更慢,在什么情况下使用等。作为结论,如果你在你的应用中是想使用小一点的数据量,你应该使用Flexjson或者Gson,如果你需要大的数据量你应该考虑Jackson 和JSON-lib。

THE END
0.java实现读写json文件的示例详解java随着现代应用对数据交换和配置管理需求的增加,JSON(JavaScript Object Notation)已成为最流行的数据格式之一,本文将为大家全面展示 Java 读写 JSON 文件的端到端流程,需要的小伙伴可以了解下+ 目录 1. 项目背景详细介绍 随着现代应用对数据交换和配置管理需求的增加,JSON(JavaScript Object NotjvzquC41yy}/lk:30pku1ywqitgn1<94576s993jvo
1.java读写json文件实例(附带源码)java写json文件本项目旨在通过一个简单的“用户配置”示例,全面展示Java读写JSON 文件的端到端流程,包括:定义数据模型、使用 Jackson 库读写 JSON 文件、异常处理与单元测试等。文章适合 Java 初学者,以及希望掌握 JSON 操作的开发者,既可作为博客,也可用于课堂教学。 jvzquC41dnuh0lxfp0tfv8r2a87969>:91gsvrhng1jfvjnnu175:;89479
2.Java学习笔记文件读写和Json数组DestrJava文件读写 Java中I/O流对文件的读写有很多种方法,百度后主要看了以下三种 第一种方式:使用FileWriter和FileReader,对文件内容按字符读取,代码如下 第二种方式:使用包装类BuffredReader和BufferedWriter,对文件内容进行整行读取,代码如下 第三种方jvzquC41yy}/ewgnqiy/exr1Fgyut8u133;9:?760jznn
3.Java读写json格式的文件方法详解Java软件开发这就是json格式。 二、那如何操作json格式的文件呢? 这个更简单了,说白了就是直接读写文件,再把读出来的文件内容格式化成json就可以了。 三、具体操作。 1.有一个实体类,如下: public class ElectSet { public String xueqi; public String xuenian; public String startTime; public String endTime; public jvzquC41yy}/qyjp/qvfp7hqo1rjd8{kgy5prns356:55A6242=80qyon
4.对象存储EOSJava服务端生成签名对象存储EOS最佳实践本文介绍如何通过 Java 服务端生成签名。由于服务端签名直传无需将密钥暴露在前端页面,具有更高的安全性。 环境准备 使用Java 1.7 及以上版本,您可以通过命令 java -version 查看 Java 版本。 配置数据源 注意: 请将config.json 文件放在 signatureServerPolicy-v1.jar 同一层级,目录结构如下: ├─signatureServerPojvzquC41gerpwm3322>70ls1qr3iguu/egtug{4fqe5bt}neng579=:6
5.使用JavaSDK的SelectObject查询CSV和JSON文件对象存储本文介绍如何使用Java SDK的SelectObject查询CSV和JSON文件。 说明 关于SelectObject的更多信息,请参见开发指南中的查询文件和API参考中的SelectObject。 注意事项 本文以华东1(杭州)外网Endpoint为例。如果您希望通过与OSS同地域的其他阿里云产品访问OSS,请使用内网Endpoint。关于OSS支持的Region与Endpoint的对应关系,请参见OSjvzquC41jgrq0jqk{wt/exr1|j5pu|4fgxkmqyjt/tkgg{jpeg5rwnw{/qhkglyu/5
6.java操作文件的读取与写入json格式数据java读写json文件文章浏览阅读742次,点赞5次,收藏7次。【代码】java 操作文件的读取与写入 json格式数据。_java读写json文件jvzquC41dnuh0lxfp0tfv8|cpiwjcx|s1cxuklqg1fkucrqu13:32B5646
7.轻松掌握Python数据交换的通用语言Json文件读写:附案例代码理解Python读写JSON文件的重要性是非常关键的:今天学习笔记分享Json文件读取。 由于json是数据交换的通用语言,在日常工作中,无论是处理设备数据、生成报告、还是与其他系统集成,JSON都是不可或缺的数据格式。熟练掌握这项技能将大大提升你在工作效率和技术竞争力。今天通过一个案例带你学会Json文件读写。 1. JSON文 jvzquC41dnuh0lxfp0tfv8vsa57:8=9771gsvrhng1jfvjnnu17639<76:8
8.Json读写本地文件实现代码javaJson读写本地文件实现代码 今天没事研究了下Gson,写了个工具类,需要的朋友可以参考下 复制代码代码如下: import java.io.*; /** * Created by tang on 14-3-1. */ public class JsonUtils { //从给定位置读取Json文件 public static String readJson(String path){jvzquC41yy}/lk:30pku1jwvkerf1=<6894ivv
9.Java解析使用JSON的多种方法java使用JSON作为数据传输,在浏览器端非常方便。JSON去除了所有JavaScript执行代码,只保留对象格式,而且JSON天生适合JavaScript处理,所以,绝大多数REST API都选择JSON作为数据传输格式。现在问题来了:使用Java如何对JSON进行读写?+ 目录 XML的特点是功能全面,但标签繁琐,格式复杂。在Web上使用XML现在越来越少,取而代之的是jvzquC41yy}/lk:30pku1jwvkerf1;<2:39/j}r
10.json生成shp本文介绍了如何使用Java处理GeoJSON数据,包括将WKT格式的几何对象转换为JSON,反之亦然。此外,还展示了如何使用GeoTools库读取和写入GeoJSON,以及从Shapefile读取数据。文中提供了详细的代码示例,如计算两点间距离、解析JSON数据等。 环境 gt-geojson-14.2.jar,json-simple-1.1.1.jar,jts-1.8.jar jvzquC41dnuh0lxfp0tfv8|gkzooa<92279268ftvkimg8igvcomu8634:838A5
11.基于Java的JSON文件解析java读取json文件并解析文章浏览阅读957次。本文介绍了JSON的基本概念及其在数据传输中的优势,详细讲解了使用Gson和FastJson两个Java库进行JSON对象与Java对象之间的转换。通过示例代码展示了如何将对象转换为JSON字符串,以及如何将JSON字符串转换回对象。同时,文章还提到了在进行文件读写时需jvzquC41dnuh0lxfp0tfv8|gkzooa>8424=758ftvkimg8igvcomu86352=4;>;
12.Java解析JSON文件的方法(二)伟大的臭猪猪Java解析JSON文件的方法 (二) assets文件夹资源的访问 assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件。 1. 先在Activity里面调用getAssets()来获取AssetManager引用。 2. 再用AssetManager的open(String fileName, int accessMode)方法则指定读取的文件以及访问模式就能得到输入jvzquC41yy}/ewgnqiy/exr1nwil{6xvct3tvjw1r1:46A9780nuou
13.Java读写JSON:实现JSON的读写操作java json写入_java 读写JSON(一) 此篇博客介绍了如何使用Java处理JSON文件,包括读取并解析JSON内容,如解析_id、openid等字段,并演示了如何构造和写入JSON对象。同时,它涉及到了依赖的json.lib库及其功能。 packagepriv.chenhy.datehandle;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileReader;jvzquC41dnuh0lxfp0tfv8|gkzooa<;39879:8ftvkimg8igvcomu86366;55:5
14.java读取json文件内容java读取json文件的函数本文介绍了一个Java程序示例,展示了如何从文件中读取JSON数据,并解析其中包含的IPv4和IPv6地址。通过遍历JSON数组和对象,程序根据不同版本的IP地址打印出具体值。 publicStringReadFile(String Path) { BufferedReaderreader= null; String laststr = ""; jvzquC41dnuh0lxfp0tfv8|gkzooa<>:49?178ftvkimg8igvcomu86365672<>
15.Java21读写Json文件花生喂龙见我的博客的<13,是否是中国春节月> 【Java】【19】Date Calendar相关 - 花生喂龙 - 博客园 https://www.cnblogs.com/huashengweilong/p/10825007.html 参考博客: java如何读写json文件 - < /> - 博客园jvzquC41yy}/ewgnqiy/exr1jwgtjnsiygomqwl1r171;9>7434ivvq
16.JavaJSONXML文件/字符串与Bean对象互转解析Ziv小威Java JSON、XML文件/字符串与Bean对象互转解析 前言 在做web或者其他项目中,JSON与XML格式的数据是大家经常会碰见的2种。在与各种平台做数据对接的时候,JSON与XML格式也是基本的数据传递格式,本文主要简单的介绍JSON/XML文件的读写操作,以及与Bean之间的转换。示例代码都是经过Demo测试的,当然也会把代码上传到GitHubjvzquC41yy}/ewgnqiy/exr1|k|ykjtygk5q1<;274>40qyon