Gson入门教程【原】
gson一个jar包就能纵横天下,不像Json-lib.jar依赖其它jar包.
点击右边图片下载jar包
或以下链接
http://central.maven.org/maven2/com/google/code/gson/gson/2.1/gson-2.1.jar
定义一个JavaBean类Person:
package ccc.json;
public class Person {
Integer id;
String name;
String place;
public Person(Integer id, String name, String place) {
super();
this.id = id;
this.name = name;
this.place = place;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", place=" + place + "]";
}
}
再定义一个JsonService.
用于生成各种形式的对象如Object,List,List<Map<String,Object>> :
package ccc.json; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; public class JsonService { public Person getPerson(){
Person person=new Person(123,"bobo","HangZhou");
return person;
} public List<Person> getPersonList(){
List<Person> list=new ArrayList<Person>();
Person person1 = new Person(123,"sisi","BeiJing");
Person person2 = new Person(2002, "bobo", "HangZhou");
list.add(person1);
list.add(person2); return list; }
public List<String> getList(){
List<String> list=new ArrayList<String>();
list.add("BeiJing");
list.add("HangZhou");
return list;
} public Map<String,Object> getMap(){
Map<String,Object> map=new HashMap<String, Object>();
map.put("id", 123);
map.put("name","sisi");
map.put("place", "BeiJing");
return map;
} public List<Map<String,Object>> getlistMap(){
List<Map<String,Object>> list=new ArrayList<Map<String,Object>>();
Map<String,Object> map1=new HashMap<String, Object>();
map1.put("id", 123);
map1.put("name","sisi");
map1.put("place", "BeiJing");
Map<String,Object> map2=new HashMap<String, Object>();
map2.put("id", 456);
map2.put("name","bobo");
map2.put("place", "HangZhou");
list.add(map1);
list.add(map2);
return list;
} }
GsonDemo入口:
package ccc.json; import java.util.List;
import java.util.Map; import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken; public class Json_demo {
public static void main(String[] args) {
Gson gson = new Gson();
JsonService service = new JsonService(); String str1 = gson.toJson(service.getPerson());
System.out.println("1: "+str1);
// 1: {"id":123,"name":"bobo","place":"HangZhou"} String str4 = gson.toJson(service.getMap());
System.out.println("2: "+str4);
// 2: {"id":123,"name":"sisi","place":"BeiJing"} String str2 = gson.toJson(service.getPersonList());
System.out.println("3: "+str2);
// 3: [{"id":123,"name":"sisi","place":"BeiJing"},{"id":2002,"name":"bobo","place":"HangZhou"}] String str3 = gson.toJson(service.getList());
System.out.println("4: "+str3);
// 4: ["BeiJing","HangZhou"] String str5 = gson.toJson(service.getlistMap());
System.out.println("5: "+str5);
// 5: [{"id":123,"name":"sisi","place":"BeiJing"},{"id":456,"name":"bobo","place":"HangZhou"}] Person personA = gson.fromJson(str4, Person.class);
System.out.println(personA);
// Person [id=123, name=sisi, place=BeiJing] Map<String,Object> mapA = gson.fromJson(str4, Map.class);
System.out.println(mapA);
// {id=123.0, name=sisi, place=BeiJing} //在已经知道要转成List的情况下可以直接带List.class参数
List<Map> list = gson.fromJson(str5 /*str2*/, List.class);
for(Map map : list){
String s = gson.toJson(map);
Person p =gson.fromJson(s, Person.class);
System.out.println(p);
}
// Person [id=123, name=sisi, place=BeiJing]
// Person [id=456, name=bobo, place=HangZhou] //转泛型的时候会把int转成double
List<Map<String,Object>> list_map = gson.fromJson(str5, new TypeToken<List<Map<String,Object>>>(){}.getType());
for(Map m: list_map){
System.out.println(m);
}
// {id=123.0, name=sisi, place=BeiJing}
// {id=456.0, name=bobo, place=HangZhou} //转Person可以把double的小数舍去
List<Person> personList = gson.fromJson(str2 /*str5*/, new TypeToken<List<Person>>(){}.getType());
for(Person p: personList){
System.out.println(p);
}
// Person [id=123, name=sisi, place=BeiJing]
// Person [id=2002, name=bobo, place=HangZhou]
}
}
gson格式化-美化
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String gsonInfo = gson.toJson(map);
我的其它相关文章
以下为特殊处理:
- Json的日期格式化(gson) -- 强力推荐
- Json的日期格式化(json-lib) -- 庸俗至极
google工具类的其它用法
java 驼峰字符和下划线字符相互转换工具类==>https://blog.csdn.net/Reminisce_man/article/details/77017554
Gson入门教程【原】的更多相关文章
- 【原】Storm 入门教程目录
Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...
- 【原】Redis入门教程
最近在学习Redis,写几篇文章记录一下学习过程:Redis入门教程. 1.Redis基本概念 Redis Redis Keys Redis 基本数据类型 Redis基本操作 遍历操作 Pub-Sub ...
- webpack入门教程之初识loader(二)
上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...
- WebGL入门教程(五)-webgl纹理
前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 WebGL入门教程(四)-webgl颜色 这里就需要用到 ...
- 无废话ExtJs 入门教程二十一[继承:Extend]
无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...
- MATLAB入门教程
MATLAB入门教程 1.MATLAB的基本知识 1-1.基本运算与函数 在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: ...
- 超强、超详细Redis数据库入门教程
这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...
- [转]Scrapy入门教程
关键字:scrapy 入门教程 爬虫 Spider 作者:http://www.cnblogs.com/txw1958/ 出处:http://www.cnblogs.com/txw1958/archi ...
- 专为设计师而写的GitHub快速入门教程
专为设计师而写的GitHub快速入门教程 来源: 伯乐在线 作者:Kevin Li 原文出处: Kevin Li 在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目 ...
随机推荐
- Jeesite 自定义api接口 404 访问不到页面
1.类上面要有路径 @RequestMapping(value = "${adminPath}/sys/good") adminPath 值可以在 jeesite.properti ...
- php获取用户真实IP和防刷机制
一. 如何获取用户IP地址 public static function getClientIp() { if (getenv('HTTP_CLIENT_IP')) { $ip = getenv( ...
- 在centos7下用http搭建配置svn服务
应用场景:SVN是Subversion的简称,是一个开放源代码的版本控制系统. 安装环境:centos7 //已关闭 Selinux和 Firewall 配置步骤: 1. 安装HTTP和SVN相关软 ...
- 黑苹果 技嘉 B250M-DS3H-CF i57500 HD630 EFI引导驱动发布
1. 鉴于苹果的MacOS OSX系统的优越性,由于现在公司的电脑为windows但是自己用的笔记本又是Mac,导致需要适应两套系统,超级麻烦.故想在电脑上装上黑苹果的计划 相关配置地址:https: ...
- a超链接设置样式
/* divcss5对象内 a超链接设置样式 */ .divcss5 a:link{ color:#F00}/* 链接默认为红色 */ .divcss5 a:hover{ color:#000}/* ...
- vue2.0项目实战(1)基础入门
最近公司的H5项目准备重构,部门老大说前端使用vue2.0来开发,所以就准备把整个项目的开发过程记录下来,一方面是为了记录开发过程中遇到的坑,另一方面也加强自己写作的能力. 什么是 Vue? 简要介绍 ...
- surfer画世界频率分布图(等高线、地点标注)
以surfer 12版本为例: 1.下载世界地图,这里我随便提供一个范例(侵删,忘记出处了): 2.进入surfer软件,选择“MAP”——“NEW”——“BASE MAP”. 以此按照以上步骤,在弹 ...
- MooFest POJ - 1990 (树状数组)
Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gather ...
- POJ 2553 The Bottom of a Graph (Tarjan)
The Bottom of a Graph Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 11981 Accepted: ...
- Windows7安装程序无法定位现有系统分区,也无法创建新的系统分区
解决Windows7.Windows8系统安装时“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示. 方法一 把Windows7镜像发在你电脑的非系统盘的其他硬盘上. 重启机器,通过U盘启动 ...