Java创建和解析Json数据方法(五)——Google Gson包的使用
(五)Google Gson包的使用
1.简介
- Provide simple
toJson()andfromJson()methods to convert Java objects to JSON and vice-versa - Allow pre-existing unmodifiable objects to be converted to and from JSON
- Extensive support of Java Generics
- Allow custom representations for objects
- Support arbitrarily complex objects (with deep inheritance hierarchies and extensive use of generic types)
各个版本的下载地址:http://www.mvnrepository.com/artifact/com.google.code.gson/gson
2.json与简单数据类型、数组
package gson;
import com.google.gson.Gson;
public class Test {
public static void main(String[] args) {
Gson gson = new Gson();
// 简单数据类型 转为 json
String intStr = gson.toJson(1);
String stringStr = gson.toJson("abcd");
String longStr = gson.toJson(new Long(10));
System.out.println(intStr); // int
System.out.println(stringStr); // String
System.out.println(longStr); // Long
// json 转为 简单数据类型
int id1 = gson.fromJson("1", int.class);
Integer id2 = gson.fromJson("1", Integer.class);
Boolean boolean1 = gson.fromJson("false", Boolean.class);
String str = gson.fromJson("\"abc\"", String.class);
System.out.println(id1);
System.out.println(id2);
System.out.println(boolean1);
System.out.println(str); // java array 转为 json
String[] strings = { "abc", "def", "ghi" };
int[][] intInt = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
String stringStrs = gson.toJson(strings); // String数组转为json
String intIntStr = gson.toJson(intInt); // 多维数据转为json
System.out.println(stringStrs);
System.out.println(intIntStr);
//json 转为 java array
String[] strings2 = gson.fromJson(stringStrs, String[].class);
int[][] intInt2 = gson.fromJson(intIntStr, int[][].class);
for (int i = 0; i < strings2.length; i++) { //输出String[]
System.out.print(strings2[i] + " ");
}
System.out.println();
for (int i = 0; i < intInt2.length; i++) { //输出int[][]
for (int j = 0; j < intInt2[i].length; j++) {
System.out.print(intInt2[i][j] + ",");
}
System.out.print(" ");
}
}
}
3.json与java集合、Map
package gson;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Test {
public static void main(String[] args) {
Gson gson = new Gson();
// Map 转 json
Map<string object=""> map = new HashMap<string object="">();
map.put("name", "JTZen9");
map.put("age", 21);
map.put("sex", "male");
String jsonMap = gson.toJson(map);
System.out.println(jsonMap);
// json 转 Map
Type type = new TypeToken<Map<string object="">>() {}.getType();
Map<string object=""> map2 = gson.fromJson(jsonMap, type);
System.out.println(map2.get("name") + " " + map2.get("age") + " " + map2.get("sex")); // java集合 转 json
List<object> nameList = new ArrayList</object><object>();
nameList.add("JTZen9");
nameList.add(map);
nameList.add("DSMGYH");
String jsonNames = gson.toJson(nameList);
System.out.println(jsonNames);
// json 转 java集合
type = new TypeToken<List</object><object>>() {}.getType();
List</object><object> list = gson.fromJson(jsonNames, type);
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i) + " ");
}
}
}
4.json与java beans
例子:
package gson;
import com.google.gson.Gson;
public class Test {
public static void main(String[] args) {
Student student = new Student();
student.setName("JTZen9");
student.setAge(21);
student.setSex("male");
Gson gson = new Gson();
// java bean 转 json
String beanStr = gson.toJson(student);
System.out.println(beanStr);
// json 转 java bean
Student student2 = gson.fromJson(beanStr, Student.class);
System.out.println(student2.getName() + " " + student2.getAge() + " " + student2.getSex()); // 转为json数据时,只会转换属性值的字段
Student stu = new Student();
stu.setName("JTZen9");
stu.setAge(21);
String test = gson.toJson(stu);
System.out.println(test); //没有sex字段
}
}
5.解析json数据
json数据如下:
{
"roomname":[
{
"PCnum":0,
"num":2,
"name":"biubiubiu",
"time":"十二月 18, 2015"
},
{
"PCnum":0,
"num":1,
"name":"jtz",
"time":"十二月 19, 2015"
},
{
"PCnum":0,
"num":1,
"name":"jtzeng",
"time":"十二月 19, 2015"
}
]
}
package gson;
import java.util.List;
public class JsonBean {
public List<roomdata> roomname;
public class RoomData {
public int PCnum;
public int num;
public String name;
public String time;
}
}
package gson;
import java.lang.reflect.Type;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class Test {
public static void main(String[] args) {
//要解析json数据
String json = "{'roomname':[{'PCnum':0,'num':2,'name':'biubiubiu','time':'Dec 22, 2015'},"
+ "{'PCnum':0,'num':1,'name':'jtz','time':'Dec 18, 2015'},"
+ "{'PCnum':0,'num':0,'name':'JTZen9','time':'Dec 22, 2015'}]}";
Gson gson = new Gson();
Type type = new TypeToken<jsonbean>(){}.getType();
JsonBean jsonBean = gson.fromJson(json, type);
System.out.println(jsonBean.roomname.size());
for (int i = 0; i < jsonBean.roomname.size(); i++) {
System.out.println(jsonBean.roomname.get(i).name + " 、 "
+ jsonBean.roomname.get(i).PCnum + " 、 "
+ jsonBean.roomname.get(i).num + " 、 "
+ jsonBean.roomname.get(i).time);
}
}
}
6.结束语
还有很多的方法没有尝试,往后慢慢积累。
Java创建和解析Json数据方法(五)——Google Gson包的使用的更多相关文章
- Java创建和解析Json数据方法(三)——json-lib包的使用
(三)json-lib包的使用 这篇笔记主要介绍json-lib包的创建和解析json数据的方式,主要是的JSONObject.JSONArray和Java对象:beans, maps ...
- Java创建和解析Json数据方法(四)——json-lib包的使用
(四)json-lib包的使用 既然json-lib包比org.json包重量级,那么json-lib包肯定有很多org.json包没有的类和方法,这篇笔记简单记录json-lib包中 ...
- Java创建和解析Json数据方法(二)——org.json包的使用
(二)org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...
- Java创建和解析Json数据方法——org.json包的使用(转)
org.json包的使用 1.简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...
- Java构造和解析Json数据的两种方法详解二
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...
- Java构造和解析Json数据的两种方法详解二——org.json
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...
- Java构造和解析Json数据的两种方法详解一——json-lib
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...
- Java构造和解析Json数据的两种方法详解一
一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.js ...
- java创建和解析json对象
最近工作遇到了 json 解析的相关需求,整理下 JSONObject 相关操作. 文中使用的例子都是基于阿里巴巴的产品 FastJSON ,涉及到的包有: import com.alibaba.fa ...
随机推荐
- JAVA基础篇—String和StringBuffer
区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringBuffer类对象为可修改对象,可以通过append() ...
- JAVA基础篇—多态
class ColaEmployee父类 package com.cola; public class ColaEmployee { private String name; private int ...
- 虚拟化技术xen,kvm,qemu区别
虚拟化类型 全虚拟化(Full Virtualization) 全虚拟化也成为原始虚拟化技术,该模型使用虚拟机协调guest操作系统和原始硬件,VMM在guest操作系统和裸硬件之间用于工作协调,一些 ...
- 2018 Multi-University Training Contest 1 Balanced Sequence(贪心)
题意: t组测试数据,每组数据有 n 个只由 '(' 和 ')' 构成的括号串. 要求把这 n 个串排序然后组成一个大的括号串,使得能够匹配的括号数最多. 如()()答案能够匹配的括号数是 4,(() ...
- Windows清理打印池的方法
另存为bat运行 @echo off title 快速清除打印队列 echo. echo 停止打印机服务 net stop spooler>nul echo. del /q /f %wind ...
- loj2028 「SHOI2016」随机序列
定义区间是内部只含有乘号的区间. 对于区间左端点是 \(l \geq 2\) 的情况,左端点前头是加号的情况和前头是减号的情况的个数是相同的.因此这些区间不对答案产生贡献. 所以区间左端点必定是 \( ...
- Apache 根据不同的端口 映射不同的站点
以前,在本地新建个项目,总是在Apache的htdocs目录下新建个项目目录,今年弄了个别人写好的网站源码,因为该系统的作者假定网站是放在根目录的,放在二级目录下会出错.所以无奈,只能想办法,根据端口 ...
- Eclipse下创建Spring MVC web程序--非maven版
首先, 安装eclipse和tomcat, 这里我下载的是tomcat9.0版本64位免安装的:地址https://tomcat.apache.org/download-90.cgi 免安装的如何启动 ...
- [整理]配置SSH密钥自动登录远程服务器
原理: 公钥私钥匹配通过验证,允许访问服务器. 简单步骤: 1.在本地创建一对密钥 2.将公钥传到需要访问的服务器上 3.将公钥放入服务器的authorized_keys,确保访问时能通过验证 4.本 ...
- javascript学习笔记 - 引用类型 Object
引用类型是一种数据结构,也称作对象定义,类似于类的概念. 对象是引用类型的实例. javascript引用类型有:Object, Array, Date, RegExp, Function 使用new ...