gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。

下面是一个简单的例子:

publicclassPerson {

privateString name;
privateintage;

/**
* @returnthe name
*/
publicString getName() {
returnname;
}

/**
* @paramname the name to set
*/
publicvoidsetName(String name) {
this.name =name;
}

/**
* @returnthe age
*/
publicintgetAge() {
returnage;
}

/**
* @paramage the age to set
*/
publicvoidsetAge(intage) {
this.age =age;
}

@Override
publicString toString()
{
returnname +":"+age;
}
}

实体很简单,两个字段,当然实体中的字段也可以是List或者Set类型的。

Gson gson =newGson();
List<Person>persons =newArrayList<Person>();
for(inti =0; i <10; i++) {
Person p =newPerson();
p.setName("name"+i);
p.setAge(i *5);
persons.add(p);
}
String str =gson.toJson(persons);

上面的代码重点是Gson对象,它提供了toJason()方法将对象转换成Json字符串,上面代码的str对象值为:

[{"name":"name0","age":0},{"name":"name1","age":5},{"name":"name2","age":10},{"name":"name3","age":15},{"name":"name4","age":20},{"name":"name5","age":25},{"name":"name6","age":30},{"name":"name7","age":35},{"name":"name8","age":40},{"name":"name9","age":45}]

很标准的json数据,很简单吧,呵呵。

下面来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。

在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。

先来看第一种:

比如json字符串为:[{"name":"name0","age":0}]

代码:

Person person =gson.fromJson(str, Person.class);

提供两个参数,分别是json字符串以及需要转换对象的类型。

第二种,转换成列表类型:

代码:

List<Person>ps =gson.fromJson(str, newTypeToken<List<Person>>(){}.getType());
for(inti =0; i <ps.size() ; i++)
{
Person p =ps.get(i);
System.out.println(p.toString());
}

可以看到上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。

转载于:https://www.cnblogs.com/happyPawpaw/archive/2012/10/23/2735697.html

gson的简单使用方法相关推荐

  1. JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

    一.什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的.停工时间,就是不能向用户提供服务的时间.高可用,就是系统具有高度可用性,尽量减少停工时间.如何用最简单的方法来搭建 ...

  2. 【CI3.1】CI框架简单使用方法

    CI框架简单使用方法 1.回忆MVC1.1.M:模型,提供数据,保存数据1.2.V:视图,只负责显示,表单form1.3.C:控制器,协调模型和视图1.4.action:动作,是控制器中的方法,用于被 ...

  3. smarty mysql demo_PHP Smarty模版简单使用方法

    本文实例讲述了PHP Smarty模版简单使用方法.分享给大家供大家参考,具体如下: Index.php: require('../libs/Smarty.class.php'); $smarty = ...

  4. 通过身份证号提取性别_身份证号提取生日、年龄、性别、籍贯,最简单的方法!...

    上一期,Amy跟大家分享了如何从身份证号中提取出生日期.今天我们继续来讲如何提取年龄.性别.籍贯. 身份证号提取年龄 ✦思路:在E2单元格输入公式"=DATEDIF(D2,TODAY(),& ...

  5. 创建三维建筑可视化和虚拟现实的最快和最简单的方法

    创建三维建筑可视化和虚拟现实的最快和最简单的方法 时长3小时12分 1280X720 Mkv 语言:英语+中文字幕(根据原英文字幕机译更准确)+原英文字幕 大小解压后:2.86G 共28小节课程 标题 ...

  6. scala akka_如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法

    scala akka by Miguel Lopez 由Miguel Lopez 如何对Scala和Akka HTTP应用程序进行Docker化-简单的方法 (How to Dockerise a S ...

  7. 上如何刻字_如何用简单的方法在零件表面刻字:这里就有你想要的答案

    上一篇文章我们用solidworks软件的焊件模块来绘制了一个最简单的机架.此过程中用到了焊件的以下功能:结构构件.角撑板.只要以后画机架肯定要用到结构构件的,大家应该注意学习好这个最常用的功能,在这 ...

  8. 不用恐惧AI的高速发展,论击败阿法狗(零)最简单的方法

    作者:刘锋 计算机博士,互联网进化论作者 10月19日凌晨,在国际学术期刊<自然>(Nature)上发表的一篇研究论文中,谷歌下属公司Deepmind报告新版程序AlphaGo Zero: ...

  9. PHP5.2.3+apache2.2.4的最简单安装方法

    最近为了安装PHP+apache这个PHP开发环境,到处查找资料,网上众说纷纭,我试了好多版本都没有成功,原因是网上说的都是过时的版本的配置方法(如PHP4+apache2.0),随着PHP和apac ...

最新文章

  1. 前端抱怨 API 响应慢,怎么办?
  2. 用g++编译C++ 的流程示例如下
  3. 基于SSM实现商户管理系统
  4. 2014百度之星资格赛第二题
  5. 傅立叶变换、拉普拉斯变换、Z变换之间 篇一
  6. boost::gil模块计算直方图的测试程序
  7. 一入爬虫深似海,反爬技术你知多少?
  8. 多维数组(冒泡排序,稀疏数组)
  9. Moving stones(暴力+思维)
  10. python测试笔试题1
  11. 树莓派添加USB外接硬盘
  12. 滴滴公司多次被下架的原因是什么,深挖测试员究竟还该不该去滴滴?
  13. iphone 利用UIImageView来制作幻灯片
  14. Linux lamp环境验证码无法显示
  15. 天超级计算机,2、天啦,古老的超级计算机!
  16. logit回归模型假设_logistic回归模型分析
  17. Python爬虫入门教程 97-100 帮粉丝写Python爬虫之【shuan色球预测前置条件】
  18. 防火墙的访问控制策略
  19. 分享一个小案例,用HMS Scankit做一个安卓扫码购小应用
  20. 对应于正态分布的拉丁超立方抽样——Python版

热门文章

  1. html写原生曲线图,HTML5 平滑的正弦波曲线图
  2. java button 圆角_UIButton具有渐变边框和圆角
  3. 哪个读书app可以导入txt_QQ阅读iphone版怎么导入电子书 三种手机QQ阅读器导入本地图书图文教程...
  4. c语言可以将负数强制转换成正数吗_C语言笔记(一、概述)
  5. 我的世界java版游戏崩溃_我的世界全攻略之-游戏崩溃的解决方法
  6. 什么是编译器?(程序是怎么跑起来的)
  7. leetcode189. 旋转数组
  8. 动态规划基础水题提纲
  9. Redis:20---常用功能之(发布与订阅)
  10. 基于Ubuntu环境使用docker搭建对于中文识别的chineseocr_lite项目