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的大名,除了是最大的开源项目 ...
随机推荐
- 【比赛】NOIP2018 填数游戏
打表找规律.... #include<bits/stdc++.h> #define ui unsigned int #define ll long long #define db doub ...
- 【BZOJ1188】分裂游戏(博弈论)
[BZOJ1188]分裂游戏(博弈论) 题面 BZOJ 洛谷 题解 这道题目比较神仙. 首先观察结束状态,即\(P\)状态,此时必定是所有的豆子都在最后一个瓶子中. 发现每次的转移一定是拿出一棵豆子, ...
- Nowcoder | [题解-N165]牛客网NOIP赛前集训营-普及组(第二场)
啊...表示一大早还没睡醒就开始打比赛(开始前一分钟的我还在桌子上趴着休眠)...表示题目思路清奇(尤其C题)...但是我还是太蒻了...\(D\)题暴力都没打...题解正式开始之前先\(\%\)一下 ...
- 面试---Python中的模块和包是什么?
python模块是: 自我包含并且有组织的代码片段为模块. 表现形式为:写的代码保存为文件.这个文件就是一个模块.sample.py 其中文件名smaple为模块名字. python包是: 包是一个有 ...
- 使用unittest单元测试框架对加法做单元测试
import unittest from parameterized import parameterized def cacl(a, b): return a+b class MyCacl(unit ...
- 通俗讲解MOSFET
一位工程师曾经对我讲,他从来不看MOSFET数据表的第一页,因为“实用”的信息只在第二页以后才出现.事实上,MOSFET数据表上的每一页都包含有对设计者非常有价值的信息.但人们不是总能搞得清楚该如何解 ...
- 定时自动从FTP服务器取数据脚本
环境需求:某些情况下经常需要向FTP服务器取文件,可以用定时任务执行简单脚本自动去取相应文件. 一般用法: ~]# ftp IP地址 端口 //ftp命令可以通过yum install ftp方式 ...
- poj1182、hdu1829(并查集)
题目链接:http://poj.org/problem?id=1182 食物链 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: ...
- MySQL数据库的基本使用简单易懂
MySQL数据库的基本使用 一.数据库概述 1. 基本介绍 数据库就是以一定格式进行组织的数据的集合.通俗来看数据库就是用户计算机上 一些具有特殊格式的数据文件的集合 2. 数据库的特点 持久化存储 ...
- Spring Boot + Mybatis + Redis二级缓存开发指南
Spring Boot + Mybatis + Redis二级缓存开发指南 背景 Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一.Mybat ...