Java操作JSON数据(2)--Gson操作JSON数据
2019-12-07 16:02:22来源:博客园 阅读 ()
Java操作JSON数据(2)--Gson操作JSON数据
Gson是Google公司发布的一个开发源码的Java库,可用于将Java对象转换为JSON字符串,也可用于将JSON字符串转换为对应的Java对象。本介绍下Gson的基本使用方法,包括序列化和反序列化;文中所使用到的软件版本:Java 1.8.0_191、Gson 2.8.6。
1、引入依赖
<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version> </dependency>
2、序列化
public static String serialize() { MyBean bean = new MyBean(); bean.setS("测试字符串"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.HOUR_OF_DAY, -1); bean.setD(calendar.getTime()); List<MyBean> list = new ArrayList<MyBean>(); list.add(bean); Map<String, List<MyBean>> map = new HashMap<String, List<MyBean>>(); map.put("data", list); Gson gson = new GsonBuilder() .serializeNulls() //序列化值为null的字段 .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式 .excludeFieldsWithModifiers(Modifier.STATIC)//根据修饰符过滤字段 .create(); String result = gson.toJson(map); System.out.println(result); return result; }
3、反序列化
public static void deserialize() { String s = serialize(); Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式 .create(); Type type = new TypeToken<Map<String, List<MyBean>>>(){}.getType(); Map<String, List<MyBean>> map = gson.fromJson(s, type); System.out.println(map); //直接通过api获取相应数据 JsonElement element = JsonParser.parseString(s); JsonArray data = element.getAsJsonObject().getAsJsonArray("data"); JsonObject bean = data.get(0).getAsJsonObject(); System.out.println(bean.get("s").getAsString()); //... }
4、完整例子
package com.inspur.demo.json; import java.lang.reflect.Modifier; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; /** * Gson操作JSON数据 */ public class GsonCase { /** * 序列化 */ public static String serialize() { MyBean bean = new MyBean(); bean.setS("测试字符串"); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.HOUR_OF_DAY, -1); bean.setD(calendar.getTime()); List<MyBean> list = new ArrayList<MyBean>(); list.add(bean); Map<String, List<MyBean>> map = new HashMap<String, List<MyBean>>(); map.put("data", list); Gson gson = new GsonBuilder() .serializeNulls() //序列化值为null的字段 .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式 .excludeFieldsWithModifiers(Modifier.STATIC)//根据修饰符过滤字段 .create(); String result = gson.toJson(map); System.out.println(result); return result; } /** * 反序列化 */ public static void deserialize() { String s = serialize(); Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式 .create(); Type type = new TypeToken<Map<String, List<MyBean>>>(){}.getType(); Map<String, List<MyBean>> map = gson.fromJson(s, type); System.out.println(map); //直接通过api获取相应数据 JsonElement element = JsonParser.parseString(s); JsonArray data = element.getAsJsonObject().getAsJsonArray("data"); JsonObject bean = data.get(0).getAsJsonObject(); System.out.println(bean.get("s").getAsString()); //... } public static void main(String[] args) { serialize(); deserialize(); } }GsonCase
package com.inspur.demo.json; import java.util.Arrays; import java.util.Date; public class MyBean { private String s = "字符串"; private String s2; private String s3 = "字符串3"; private int i = 123; private Integer i2; private char c = '到'; private char[] c2 = new char[]{'a', 'b'}; private Date d = new Date(); private Date[] d2 = new Date[]{new Date(), new Date()}; public String getS() { return s; } public void setS(String s) { this.s = s; } public String getS2() { return s2; } public void setS2(String s2) { this.s2 = s2; } public String getS3() { return s3; } public void setS3(String s3) { this.s3 = s3; } public int getI() { return i; } public void setI(int i) { this.i = i; } public Integer getI2() { return i2; } public void setI2(Integer i2) { this.i2 = i2; } public char getC() { return c; } public void setC(char c) { this.c = c; } public char[] getC2() { return c2; } public void setC2(char[] c2) { this.c2 = c2; } public Date getD() { return d; } public void setD(Date d) { this.d = d; } public Date[] getD2() { return d2; } public void setD2(Date[] d2) { this.d2 = d2; } @Override public String toString() { return "MyBean [s=" + s + ", s2=" + s2 + ", s3=" + s3 + ", i=" + i + ", i2=" + i2 + ", c=" + c + ", c2=" + Arrays.toString(c2) + ", d=" + d + ", d2=" + Arrays.toString(d2) + "]"; } }MyBean
原文链接:https://www.cnblogs.com/wuyongyin/p/12001016.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:循环结构
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash