JSON

Java JSON技术框架选型与范例

字号+ 作者:H5之家 来源:H5之家 2015-09-07 15:17 我要评论( )

Java JSON技术框架选型与实例 ? JSON JSON 英文全称为 JavaScriptObject Natation Java transient 关键字 ?? JAVA 规范原文 The transient marker is not fully specified by the Java LanguageSpecification but is used in object serialization to mark m

Java JSON技术框架选型与实例

?

JSON

JSON英文全称为JavaScript Object Natation

Java transient关键字

?? JAVA规范原文The transient marker is not fully specified by the Java Language Specification but is used in object serialization to mark member variables that should not be serialized.

基于JAVAJSON主要开源项目及其对比

JSONBean5个线程并发,约200字节对象,1千万次转换:

?

Jackson

JSON-lib

Gson

吞吐量

64113.7

8067.4

13952.8

总耗时()

155

1238

700

?BeanJSON5个线程并发,约200字节对象,1千万次转换:

?

Jackson

JSON-lib

Gson

吞吐量

54802

15093.2

17308.2

总耗时()

181

661

560

显而易见,无论是哪种形式的转换,Jackson > Gson > Json-lib

?????Jackson的处理能力甚至高出Json-lib10倍左右

?

性能对比

测试案例

JSON-Lib

Simple-JSON

Fastjson

Jackson

IntArray1000Decode

3,626

1,431

563

596

StringArray1000Decode

2,698

2,283

677

774

Map100StringDecode

515

597

208

230

功能对比

特性

JSON-Lib

Simple-JSON

Fastjson

Jackson

序列化支持数组

不支持

不支持

支持

支持

序列化支持Enum

不支持

不支持

支持

支持

支持JavaBean

不直接支持

不直接支持

支持

支持

?

可以看到Fastjson在性能方面,超越目前的所有java json proccesor,包括jackson

?

FastJson应用实例

//定义一个User PO对象

public class User implements Serializable { private static final long serialVersionUID = 1738399846398814044L; private String userid; private String username; //注意这里使用了Refrence及Lazyloading相关的引用 @Refrence private UserDetail userDeatil; public String getUserid() { return userid; } public void setUserid(String userid) { this.userid = userid; } public String getUsername() { return username; } public void setUsername(String username) { this. username = username; } public UserDetail getUserDetail() { return userDetail; } public void setUserDetail (UserDetail userDetail) { this. userDetail = userDetail; } } ?

?

//定义一个UserDetail PO对象

public class UserDetail implements Serializable { private static final long serialVersionUID = 1738399846398814045L; private String address; public String getAddress() { return address; } public void setAddress (String address) { this. address = address; } } ?

?

这里使用伪码

…. List<User> ls= userService.getUserList(); PrintWriter out = null; try { out = getResponse().getWriter(); out.write(JSON.toJSONString(ls)); out.flush(); } catch (IOException e) { e.printStackTrace(); } finally { out.close(); } … ?

?

$.ajax({ type:"GET", url:"/user/getuserlist", //假设这是你配置后的action地址 dataType:"json", cache:false, success: function(users){ var html=””; if(users.length>0){ for(var i in users){ html=html+”username:”+users[i]+username+” address:”+users[i].userDetail.address; } alert(html); } }); ?

?

第一种办法:

private transient UserDetail userDeatil; ?

第二种办法:

@JSONField(serialize=false) private transient UserDetail userDeatil; ?

?

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • php CI 实战教程:[5]用curl获取json并解析

    php CI 实战教程:[5]用curl获取json并解析

    2016-02-26 17:00

  •  JSON入门级学习总结-JSON数据结构

    JSON入门级学习总结-JSON数据结构

    2016-02-25 11:05

  • Android解析Json速度最快的库:json

    Android解析Json速度最快的库:json

    2016-02-13 18:00

  • JavaScript转换与解析JSON方法实例详解第1/2页

    JavaScript转换与解析JSON方法实例详解第1/2页

    2016-02-10 21:25

网友点评