JSON

java Json 技术记录

字号+ 作者:H5之家 来源:H5之家 2017-12-13 17:11 我要评论( )

1.Json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括commons-beanutils.jar,commons-collections.j

标签:不能   isa   社区   long   get   hash   row   log   java对象   

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,对于复杂类型的转换,json-lib对于json转换成bean还有缺陷,比如一个类里面会出现另一个类的list或者map集合,json-lib从json到bean的转换就会出现问题。json-lib在功能和性能上面都不能满足现在互联网化的需求。

2.Gson

Gson是目前功能最全的Json解析神器,Gson当初是为因应Google公司内部需求而由Google自行研发而来,但自从在2008年五月公开发布第一版后已被许多公司或用户应用。Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额外的jar,能够直接跑在JDK上。
而在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象。类里面只要有get和set方法,Gson完全可以将复杂类型的json到bean或bean到json的转换,是JSON解析的神器。

Gson在功能上面无可挑剔,但是性能上面比FastJson有所差距。

3.fastjson

Fastjson是一个Java语言编写的高性能的JSON处理器,由阿里巴巴公司开发。无依赖,不需要例外额外的jar,能够直接跑在JDK上。FastJson在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。

FastJson采用独创的算法,将parse的速度提升到极致,超过所有json库。

4.jackJson

 相比json-lib框架,Jackson所依赖的jar包较少,简单易用并且性能也要相对高些。而且Jackson社区相对比较活跃,更新速度也比较快。Jackson对于复杂类型的json转换bean会出现问题,一些集合Map,List的转换出现问题。Jackson对于复杂类型的bean转换Json,转换的json格式不是标准的Json格式。

相关maven依赖

net.sf.json-libjson-lib2.3jdk15com.google.code.gsongson2.3.1com.alibabafastjson1.2.4junitjunit4.12testcom.fasterxml.jackson.corejackson-core2.8.0com.fasterxml.jackson.corejackson-annotations2.8.0com.fasterxml.jackson.corejackson-databind2.8.0

1.Json-lib 使用方法

package com.jxufe.study.jsonstudy.test; import com.jxufe.study.jsonstudy.model.User; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JsonConfig; import org.junit.Test; import java.util.*; public class JsonLibTest { @Test public void beanToJson() { User user = new User("zengting",25,new Date(),"[email protected]"); JSONObject jsonObject = JSONObject.fromObject(user); System.out.println(jsonObject.toString()); } @Test public void jsonToBean() { String json = "{\"age\":25,\"birthday\":{\"date\":7,\"day\":4,\"hours\":18,\"minutes\":7,\"month\":11,\"seconds\":23,\"time\":1512641243792,\"timezoneOffset\":-480,\"year\":117},\"email\":\"[email protected]\",\"name\":\"zengting\"}\n"; JSONObject jsonObject = JSONObject.fromObject(json); User user = (User) JSONObject.toBean(jsonObject,User.class); System.out.println(user); } @Test public void listToJson() { List<User> usersList = new ArrayList<User>(); usersList.add(new User("zengting",23,new Date(),"[email protected]")); usersList.add(new User("mindong",23,new Date(),"[email protected]")); usersList.add(new User("liliang",21,new Date(),"[email protected]")); String jsonString = JSONArray.fromObject(usersList).toString(); System.out.println(jsonString); } @Test public void jsonToList() { List<User> usersList = new ArrayList<User>(); usersList.add(new User("zengting",23,null,"[email protected]")); usersList.add(new User("mindong",23,null,"[email protected]")); String jsonString = JSONArray.fromObject(usersList).toString(); System.out.println(jsonString); JSONArray jsonArray = JSONArray.fromObject(jsonString); List<User> list = JSONArray.toList(jsonArray, new User(),new JsonConfig()); for (User user : list) { System.out.println(user); } } @Test public void JsonToArray() { String jsonString = "[{\"age\":23,\"birthday\":null,\"email\":\"[email protected]\",\"name\":\"zengting\"},{\"age\":23,\"birthday\":null,\"email\":\"[email protected]\",\"name\":\"mindong\"}]"; JSONArray jsonArray = JSONArray.fromObject(jsonString); Object[] obj = (Object[]) JSONArray.toArray(jsonArray, User.class); for (int i = 0; i < obj.length; i++) { System.out.println((User) obj[i]); } } // Map to Json @Test public void MapToJson() { Map<String, User> map = new HashMap<String, User>(); map.put("person1", new User("zengting",23,null,"[email protected]")); map.put("person2", new User("mindong",23,null,"[email protected]")); String json = JSONObject.fromObject(map).toString(); System.out.println(json); } // Json to map @Test public void JsonToMap() { String jsonStr = "{\"person2\":{\"age\":23,\"birthday\":null,\"email\":\"[email protected]\",\"name\":\"mindong\"},\"person1\":{\"age\":23,\"birthday\":null,\"email\":\"[email protected]\",\"name\":\"zengting\"}}"; JSONObject jsonObject = JSONObject.fromObject(jsonStr); Map<String,User> map = new HashMap<String,User>(); for (Iterator<?> iter = jsonObject.keys(); iter.hasNext();) { String key = (String) iter.next(); map.put(key,(User)JSONObject.toBean((JSONObject) jsonObject.get(key),User.class)); } for(String key : map.keySet()){ System.out.println((User)map.get(key)); } } }

2.Gson使用方法

 

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

相关文章
  • ASP.NET Core教程【一】关于Razor Page的知识

    ASP.NET Core教程【一】关于Razor Page的知识

    2017-11-30 18:05

  • python学习之路(二)

    python学习之路(二)

    2017-11-24 11:25

  • sqlserverToXML

    sqlserverToXML

    2017-11-10 17:05

  • shelve模块

    shelve模块

    2017-11-06 13:06

网友点评