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);

我的其它相关文章

fastjson基本使用 (待继续完善)【原】

fastjson json和map及对象转换【转】【补】

Gson入门教程【原】

以下为特殊处理:

google工具类的其它用法

java 驼峰字符和下划线字符相互转换工具类==>https://blog.csdn.net/Reminisce_man/article/details/77017554

Gson入门教程【原】的更多相关文章

  1. 【原】Storm 入门教程目录

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

  2. 【原】Redis入门教程

    最近在学习Redis,写几篇文章记录一下学习过程:Redis入门教程. 1.Redis基本概念 Redis Redis Keys Redis 基本数据类型 Redis基本操作 遍历操作 Pub-Sub ...

  3. webpack入门教程之初识loader(二)

    上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...

  4. WebGL入门教程(五)-webgl纹理

    前面文章: WebGL入门教程(一)-初识webgl WebGL入门教程(二)-webgl绘制三角形 WebGL入门教程(三)-webgl动画 WebGL入门教程(四)-webgl颜色 这里就需要用到 ...

  5. 无废话ExtJs 入门教程二十一[继承:Extend]

    无废话ExtJs 入门教程二十一[继承:Extend] extjs技术交流,欢迎加群(201926085) 在开发中,我们在使用视图组件时,经常要设置宽度,高度,标题等属性.而这些属性可以通过“继承” ...

  6. MATLAB入门教程

    MATLAB入门教程   1.MATLAB的基本知识 1-1.基本运算与函数    在MATLAB下进行基本数学运算,只需将运算式直接打入提示号(>>)之後,并按入Enter键即可.例如: ...

  7. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  8. [转]Scrapy入门教程

    关键字:scrapy 入门教程 爬虫 Spider 作者:http://www.cnblogs.com/txw1958/ 出处:http://www.cnblogs.com/txw1958/archi ...

  9. 专为设计师而写的GitHub快速入门教程

    专为设计师而写的GitHub快速入门教程 来源: 伯乐在线 作者:Kevin Li     原文出处: Kevin Li 在互联网行业工作的想必都多多少少听说过GitHub的大名,除了是最大的开源项目 ...

随机推荐

  1. Marriage Match III HDU - 3277(二分权值 + 拆点 建边)

    题意: 只不过是hdu3081多加了k种选择 想一下,最多能玩x轮,是不是就是每个女生能最多选x个男生 现在题中的每个女生比3081多了k中选择   那就把女生拆点  i  i‘ i --> i ...

  2. 【XSY2111】Chef and Churus 分块 树状数组

    题目描述 有一个长度为\(n\)的数组\(A\)和\(n\)个区间\([l_i,r_i]\),有\(q\)次操作: \(1~x~y\):把\(a_x\)改成\(y\) \(2~x~y\):求第\(l\ ...

  3. Linux mount BSD disk partition

    Linux mount BSD disk partition 来源 https://www.cnblogs.com/jhcelue/p/6858159.html 假设须要从第二块硬盘复制文件.该硬盘格 ...

  4. [poj1160][IOI2000]Post Office【动态规划】

    传送门 https://vjudge.net/problem/POJ-1160#author=SCU2018 题目描述 在一条水平的公路上建有n个小屋,两个小屋间的距离是它们的横坐标之差的绝对值.保证 ...

  5. [NOI2012]美食节(费用流)

    题目描述 CZ市为了欢迎全国各地的同学,特地举办了一场盛大的美食节.作为一个喜欢尝鲜的美食客,小M自然不愿意错过这场盛宴.他很快就尝遍了美食节所有的美食.然而,尝鲜的欲望是难以满足的.尽管所有的菜品都 ...

  6. centos7系统排错

    系统排错 troubleshooting winPE --光盘或u盘启动盘 产生一个PE系统(类似内存上跑的临时系统) 系统排错 rescue 模式 (挽救模式) 类似windows winPE模式 ...

  7. Python3 与 C# 基础语法对比(String专栏)

      Code:https://github.com/lotapp/BaseCode 多图旧排版:https://www.cnblogs.com/dunitian/p/9119986.html 在线编程 ...

  8. webpack入门(七) API in LOADERS

    介绍 loaders允许你用require() 预处理文件(preprocess files)或者加载他们,在其他的构建工具中,loaders就是一种像“任务(tasks)”的东西.他提供了一种处理前 ...

  9. js jquery css 选择器总结

    js jquery css 选择器总结 一.原始JS(Document 对象)选择器. id选择器:document.getElementById("test"); name选择器 ...

  10. 【洛谷P2925 [USACO08DEC]干草出售Hay For Sale】

    题意翻译 题目描述 农民john面临一个很可怕的事实,因为防范失措他存储的所有稻草给澳大利亚蟑螂吃光了,他将面临没有稻草喂养奶牛的局面.在奶牛断粮之前,john拉着他的马车到农民Don的农场中买一些稻 ...