使用Gson实现Json和Java对象的转换

标签: gson json java | 发表时间:2013-09-15 09:00 | 作者:
出处:http://www.iteye.com

Gson是Google的开源项目(项目主页: https://code.google.com/p/google-gson/),

Gson在线帮助文档: http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html

Gson包下载地址: https://google-gson.googlecode.com/files/google-gson-2.2.4-release.zip

 

示例:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
 
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
 
class User{
   public User(String name,int age,StringBuffer sex,boolean isChild){
      this.name = name;
      this.age = age;
      this.sex = sex;
      this.isChild = isChild;
   }
   private String name;
   private int age;
   private StringBuffer sex;
   private boolean isChild;
   public String toString(){
      return "{name="+name+";age="+age+";sex="+sex+";isChild="+isChild+"}";
   }
   public int hashCode(){
      return name.hashCode()*100+age;
   }
}
 
public class GsonTest {
   public static void main(String[] args) {
      Gson gson = new Gson();
     
      System.out.println("1普通的Bean的转换**************************");
      System.out.println("将一个Bean转换成为json字符串->");
      User user1 = new User("凤姐",12,new StringBuffer("未知"),true);
      System.out.println("转换之前的user1"+user1);
      String json = gson.toJson(user1);
      System.out.println("User对象转换成为Json字符串,json==="+json);
     
      System.out.println("***************************");
      System.out.println("将一个json字符串转换成为Bean->");
      User user2 = gson.fromJson(json, User.class);
      System.out.println("转换成为的user2=="+user2);
      System.out.println();
     
      System.out.println("2Collection集合的转换**************************");
      System.out.println("将一个Bean的List集合转换成为json字符串->");
      Collection<User> userList1 = new ArrayList<User>();
      for(int i=0;i<3;i++){
        User user = new User("如花",10+i,new StringBuffer("男"),false);
        userList1.add(user);
      }
      json = gson.toJson(userList1);
      System.out.println("User的List集合对象转换成为Json字符串,json==="+json);
     
      System.out.println("***************************");
      System.out.println("将一个json字符串转换成为Bean的List集合->");
      Collection<User> userList2 =
           gson.fromJson(json,
                 new TypeToken<Collection<User>>(){}.getType());
      System.out.println("转换成为的User的List集合,userList2="+userList2);
      System.out.println();
     
      System.out.println("3Array数组的转换**************************");
      System.out.println("将一个Bean的Array数组转换成为json字符串->");
      User [] userArray1 = new User[3];
      for(int i=0;i<userArray1.length;i++){
        userArray1[i] = new User("芙蓉",20,new StringBuffer("人妖"),true);
      }
      json = gson.toJson(userArray1);
      System.out.println("User的数组对象转换成为Json字符串,json==="+json);
     
      System.out.println("***************************");
      System.out.println("将一个json字符串转换成为Bean的数组对象->");
      User [] userArray2 = gson.fromJson(json, new TypeToken<User[]>(){}.getType());
      System.out.println("转换成为的User的数组对象,userArray2="+Arrays.toString(userArray2));
      System.out.println();
     
      System.out.println("4Map的转换**************************");
      System.out.println("将一个Bean的Map转换成为json字符串->");
      Map<String,User> map1 = new HashMap<String,User>();
      for(int i=0;i<3;i++){
        map1.put(""+(i+10), userArray1[i]);
      }
      json = gson.toJson(map1);
      System.out.println("User的Map集合转换成为Json字符串,json==="+json);
     
      System.out.println("***************************");
      System.out.println("将一个json字符串转换成为Bean的数组对象->");
      Map<String,User> map2 =
           gson.fromJson(json,
                 new TypeToken<Map<String,User>>(){}.getType());
      System.out.println("转换成为的User的数组对象,map2=="+map2);
   }
}

运行结果:

1普通的Bean的转换**************************
将一个Bean转换成为json字符串->
转换之前的user1{name=凤姐;age=12;sex=未知;isChild=true}
User对象转换成为Json字符串,json==={"name":"凤姐","age":12,"sex":"未知","isChild":true}
***************************
将一个json字符串转换成为Bean->
转换成为的user2=={name=凤姐;age=12;sex=未知;isChild=true}

2Collection集合的转换**************************
将一个Bean的List集合转换成为json字符串->
User的List集合对象转换成为Json字符串,json===[{"name":"如花","age":10,"sex":"男","isChild":false},{"name":"如花","age":11,"sex":"男","isChild":false},{"name":"如花","age":12,"sex":"男","isChild":false}]
***************************
将一个json字符串转换成为Bean的List集合->
转换成为的User的List集合,userList2=[{name=如花;age=10;sex=男;isChild=false}, {name=如花;age=11;sex=男;isChild=false}, {name=如花;age=12;sex=男;isChild=false}]

3Array数组的转换**************************
将一个Bean的Array数组转换成为json字符串->
User的数组对象转换成为Json字符串,json===[{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},{"name":"芙蓉","age":20,"sex":"人妖","isChild":true}]
***************************
将一个json字符串转换成为Bean的数组对象->
转换成为的User的数组对象,userArray2=[{name=芙蓉;age=20;sex=人妖;isChild=true}, {name=芙蓉;age=20;sex=人妖;isChild=true}, {name=芙蓉;age=20;sex=人妖;isChild=true}]

4Map的转换**************************
将一个Bean的Map转换成为json字符串->
User的Map集合转换成为Json字符串,json==={"10":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},"11":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true},"12":{"name":"芙蓉","age":20,"sex":"人妖","isChild":true}}
***************************
将一个json字符串转换成为Bean的数组对象->
转换成为的User的数组对象,map2=={10={name=芙蓉;age=20;sex=人妖;isChild=true}, 11={name=芙蓉;age=20;sex=人妖;isChild=true}, 12={name=芙蓉;age=20;sex=人妖;isChild=true}}

 

参考文章:

http://qindongliang1922.iteye.com/blog/1915710

http://www.cnblogs.com/happyPawpaw/archive/2012/10/23/2735697.html

http://zhiweiofli.iteye.com/blog/1684236



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [gson json java] 推荐:

判断字符串是否是有效json对象(java + gson )

- - 改善
已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

使用Gson实现Json和Java对象的转换

- - ITeye博客
Gson是Google的开源项目(项目主页: https://code.google.com/p/google-gson/),. Gson在线帮助文档: http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/index.html.

Google的GSON框架解析JSON数据

- - JavaScript - Web前端 - ITeye博客
JSON即JavaScript Object Natation, 它是一种轻量级的数据交换格式, 与XML一样, 是广泛被采用的客户端和服务端交互的解决方案. JSON中对象(Object)以"{"开始, 以"}"结束. 对象中的每一个item都是一个key-value对, 表现为"key:value"的形式, key-value对之间使用逗号分隔.

JSON库之性能比较:JSON.simple VS GSON VS Jackson VS JSONP

- - Java译站
Java中哪个JSON库的解析速度是最快的. JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考了. 我们很少会去想用到的这些JSON库到底有什么不同,但事实上它们的确是不太一样的. 因此,我们运行了一个基准测试来对常用的几个JSON库进行了测试,看看在解析不同大小的文件时哪个库的速度是最快的.

json学习(java篇)

- - 博客园_首页
前一个小项目中用到了json:服务器返回的数据有xml或者json格式的数据,由于json简洁、轻量、高性能等优点,我们当时就采用的是json格式的数据. 上个月没有心情学习啊,就索性多玩会儿,不过今年得有个目标,至少博客得多写写,质量上也希望比前几个月有所提升,那就开始吧. 先从json基础知识开始学起.

[Json]json-lib简单处理java对象变为json对象

- - CSDN博客编程语言推荐文章
由于js对json的原生支持,所以现在很多项目的数据传输都喜欢用json. 怎么样把数据从java对象转化为json对象,有怎么把前台的json对象转化成java对象去处理. json-lib是sourceforge的一个开源项目,常用来解决java json数据转换的问题. 下载地址是 http://sourceforge.net/projects/json-lib/.

GitHub - json-path/JsonPath: Java JsonPath implementation json 类xpath 解析工具

- -
JsonPath expressions always refer to a JSON structure in the same way as XPath expression are used in combination with an XML document. Functions can be invoked at the tail end of a path - the input to a function is the output of the path expression.

JSON与JAVA的数据转换

- - BlogJava_首页
本文介绍如何使用JSON-lib这个Java类包实现Java的数据转换. 通过此类包可以把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean. JSON-lib这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean.

Java下利用Jackson进行JSON解析和序列化

- - 企业架构 - ITeye博客
Java下常见的Json类库有Gson、JSON-lib和Jackson等,Jackson相对来说比较高效,在项目中主要使用Jackson进行JSON和Java对象转换,下面给出一些Jackson的JSON操作方法. 首先去官网下载Jackson工具包,下载地址http://wiki.fasterxml.com/JacksonDownload.

Java JSON(一)Jackson区别于竞争对手的7个杀手锏--转

- - 开源软件 - ITeye博客
转自:http://www.blogjava.net/wangxinsh55/archive/2012/09/06/387179.html. Jackson JSON 处理器 为一行之有效的Java JSON处理器,诸如它具有如下特点:.     简但且方便的JSON解析,以及与Java对象的相互转换.