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. IDEA 一些基本概念
  2. html5 css3 卡片切换,HTML5之纯CSS3实现的tab标签切换
  3. 精通Server Core系列之二 ---Server Core安装与基本配置
  4. python读取log文件_python之文件的读写(文本文档,log文件)
  5. 编程语言python入门-【python】编程语言入门经典100例--19
  6. jdk8升级jdk11报 java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
  7. Rust: flat_map、filter_map、for_each
  8. 新手如何搭建淘宝客网站,实用教程
  9. Unity 通过修改图片透明度实现淡出效果
  10. element-ui vue-quill-editor 富文本编辑器 解决插入图片不采用base64 从服务器传图片在显示返回url
  11. PDF转成JPG,使用PDFTOJPG并去除水印
  12. 怎样修改计算机用户文件名,win10修改用用户文件夹名字怎么操作_win10更改用户文件夹名称方法...
  13. 深入理解AQS--jdk层面管程实现【管程详解的补充】
  14. Mysql - 对所有员工的薪水按照salary进行按照1-N的排名
  15. Java面向对象 继承,super,方法重写
  16. proguard 配置简介
  17. 【转载】Spring5源码调试环境搭建
  18. 证件照制作教程:如何使用在线工具制作高质量的证件照
  19. 驱动精灵2014网卡版 v8.0.522.1102 扩展版
  20. 双重差分模型能做固定效应吗_stata中双重差分操流程及代码

热门文章

  1. 盐务街属于一环吗_郑州步入“五环”时代,最早的“一环”原来是这里
  2. StringBuilder 和 String拼接10万个字符串的速度测试差别太大了
  3. freebsd linux目录,FreeBSD和Linux如何互相访问文件系统
  4. 在notepad++中配置java编译环境
  5. 关于jsp页面显示的时间格式和Oracle数据库中的格式不一样的问题
  6. (多线程)leetcode1117. H2O 生成 认识Java中的PV原语
  7. leetcode66. 加一
  8. C++(STL):25 ---序列式容器stack源码剖析
  9. C++:03---引用类型
  10. MachineLearning(10)-聚类