之前一直用的是官网上的库:http://www.json.org/java/index.html
个人体验,这个库的毛病挺多的,比如在将JSONObject转换成String的过程中会产生大量的临时性的String对象(因为没用StringBuffer),更郁闷的一个问题是,它可以很容易的将Java的某个对象序列化成JSON格式的字符串,比如:
MyObject myobj = new MyObject();
JSONObject jsonobj = new JSONObject(myobj);
String jsonstr = jsonobj.toString();
但是,你没有办法反序列化回来: jsonstr -> myobj
如果想得到这个效果,就只能很笨的自己动手将myobj的那些变量一个个从jsonstr中提取出来,然后重新拼装。
今天在网上搜了一下,才发现基于JAVA的JSON库原来还有很多,而且许多都要强于官网版。
本文介绍的是其中的一个: google-gson(Gson)
Link: http://code.google.com/p/google-gson/
之所以用它是因为这个库能够实现反序列化的功能,而且代码超简单:
序列化:
MyObject myobj = new MyObject();
String jsonstr = new Gson().toJson(myobj);
反序列化:
MyObject myobj = new Gson().fromJson(jsonstr, MyObject.class);
最后,附上stackoverflow上关于几个JSON库的比较:
JSONLib is awsesome as a core JSON library when you just want to process all elements of a JSON.
JSONArray cms = jsonObject.getJSONArray("containerManifests");
for (Object o : cms) {
JSONObject cm = (JSONObject) o;
String cmId = cm.getString( "cmId" );
}
FlexJSON shines with its deepSerialize method that can properly handle serializing all get methods presented in a bean obtained from Hibernate (lazy loaded).
ContainerManifest cm = cmDAO.read( cmId );
String cmJson = new JSONSerializer().deepSerialize( cm );
Gson seems to be the best API to use when you want to convert a json to a Java class. Other API only call set methods on the high level classes in the bean structure. If you have a deep bean structure, everything else will be implemented with dyna beans. Causes havoc elsewhere. Gson fully populates all low level values by calling all set methods for all data found in the JSON.
Gson gson = new Gson();
ContainerManifest cm = gson.fromJson( json, ContainerManifest.class );
分享到:
相关推荐
Gson 中解决 json 反序列化时相同属性对应不同类型的值的问题(代码),对应文章链接:https://blog.csdn.net/ZiFung_Yip/article/details/89143255
Gson-2.8.1的官方jar包合集【gson-2.8.1.jar,gson-2.8.1-sources.jar】, 包含Gson核心包和源码包。
Gson-2.8.0的官方jar包合集【gson-2.8.0.jar,gson-2.8.0-sources.jar,gson-2.8.0-javadoc.jar】,JSON解析类库Gson库的jar包。
gson-2.0.1.jar-Json解析工具,序列化反序列化,实体类互转Json,免费jar包
gson-2.10.1.jar gson-2.10.jar gson-2.9.1.jar gson-2.9.0.jar gson-2.8.9.jar gson-2.8.8.jar gson-2.8.7.jar gson-2.8.6.jar gson-2.8.5.jar gson-2.8.4.jar gson-2.8.3.jar gson-2.8.2.jar gson-2.8.1.jar gson-...
gson,json,gson-2.2.4.jar,gson-2.2.4.jar,gson-2.2.4.jar,gson-2.2.4.jar
主要讲述Json序列化与反序列化,主要使用Gson、FastJson、Jackson实现
gson-2.3.jar(含gson-2.3-javadoc.jar和gson-2.3-sources.jar)解压缩之后有3个夹包
Gson-2.8.2 官方jar包合集【gson-2.8.2.jar,gson-2.8.2-sources.jar】,Gson解析类库的jar包和源码包。
Gson-2.8.0的官方jar包合集【gson-2.8.0.jar,gson-2.8.0-sources.jar,gson-2.8.0-javadoc.jar】,JSON解析类库Gson库的jar包。
赠送jar包:gson-2.8.0.jar; 赠送原API文档:gson-2.8.0-javadoc.jar; 赠送源代码:gson-2.8.0-sources.jar; 赠送Maven依赖信息文件:gson-2.8.0.pom; 包含翻译后的API文档:gson-2.8.0-javadoc-API文档-中文...
包含gson解析json,JSONArray,JSONObject解析用到的gson-2.3.1.jar,json-lib-2.3-jdk15.jar,commons-lang-2.0.jar,commons-logging-1.1.1.jar,ezmorph-1.0.2.jar,commons-collections-3.2.jar,commons-...
赠送jar包:gson-2.8.7.jar; 赠送原API文档:gson-2.8.7-javadoc.jar; 赠送源代码:gson-2.8.7-sources.jar; 赠送Maven依赖信息文件:gson-2.8.7.pom; 包含翻译后的API文档:gson-2.8.7-javadoc-API文档-中文...
Gson解析之自定义序列化和反序列化的代码例子,但后端对同一个字段给的数据类型与文档不一致时的处理
fastjson、gson、jackson序列化和反序列化所用json文件
赠送jar包:gson-2.8.5.jar; 赠送原API文档:gson-2.8.5-javadoc.jar; 赠送源代码:gson-2.8.5-sources.jar; 赠送Maven依赖信息文件:gson-2.8.5.pom; 包含翻译后的API文档:gson-2.8.5-javadoc-API文档-中文...
赠送jar包:gson-2.6.2.jar; 赠送原API文档:gson-2.6.2-javadoc.jar; 赠送源代码:gson-2.6.2-sources.jar; 包含翻译后的API文档:gson-2.6.2-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:...
赠送jar包:gson-2.8.6.jar; 赠送原API文档:gson-2.8.6-javadoc.jar; 赠送源代码:gson-2.8.6-sources.jar; 赠送Maven依赖信息文件:gson-2.8.6.pom; 包含翻译后的API文档:gson-2.8.6-javadoc-API文档-中文...
赠送jar包:gson-2.6.2.jar; 赠送原API文档:gson-2.6.2-javadoc.jar; 赠送源代码:gson-2.6.2-sources.jar; 包含翻译后的API文档:gson-2.6.2-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:...
google-json-gson-master,google的jsonjar包,提供json方法。