Java操作JSON数据(2)

Gson是Google公司发布的一个开发源码的Java库,可用于将Java对象转换为JSON字符串,也可用于将JSON字符串转换为对应的Java对象。本介绍下Gson的基本使用方法,包括序列化和反序列化;文中所使用到的软件版本:Java 1.8.0_191、Gson 2.8.6。

1、引入依赖

1<dependency> 2 <groupId>com.google.code.gson</groupId> 3 <artifactId>gson</artifactId> 4 <version>2.8.6</version> 5</dependency>

2、序列化

1public static String serialize() { 2 MyBean bean = new MyBean(); 3 bean.setS("测试字符串"); 4 Calendar calendar = Calendar.getInstance(); 5 calendar.add(Calendar.HOUR_OF_DAY, -1); 6 bean.setD(calendar.getTime()); 7 8 List<MyBean> list = new ArrayList<MyBean>(); 9 list.add(bean); 10 Map<String, List<MyBean>> map = new HashMap<String, List<MyBean>>(); 11 map.put("data", list); 12 13 Gson gson = new GsonBuilder() 14 .serializeNulls() //序列化值为null的字段 15 .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式 16 .excludeFieldsWithModifiers(Modifier.STATIC)//根据修饰符过滤字段 17 .create(); 18 String result = gson.toJson(map); 19 System.out.println(result); 20 return result; 21 }

3、反序列化

1public static void deserialize() { 2 String s = serialize(); 3 Gson gson = new GsonBuilder() 4 .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式 5 .create(); 6 Type type = new TypeToken<Map<String, List<MyBean>>>(){}.getType(); 7 Map<String, List<MyBean>> map = gson.fromJson(s, type); 8 System.out.println(map); 9 10 //直接通过api获取相应数据 11 JsonElement element = JsonParser.parseString(s); 12 JsonArray data = element.getAsJsonObject().getAsJsonArray("data"); 13 JsonObject bean = data.get(0).getAsJsonObject(); 14 System.out.println(bean.get("s").getAsString()); 15 //... 16 }

4、完整例子

1package com.inspur.demo.json; 2 3import java.lang.reflect.Modifier; 4import java.lang.reflect.Type; 5import java.util.ArrayList; 6import java.util.Calendar; 7import java.util.HashMap; 8import java.util.List; 9import java.util.Map; 10 11import com.google.gson.Gson; 12import com.google.gson.GsonBuilder; 13import com.google.gson.JsonArray; 14import com.google.gson.JsonElement; 15import com.google.gson.JsonObject; 16import com.google.gson.JsonParser; 17import com.google.gson.reflect.TypeToken; 18 19/** 20 * Gson操作JSON数据 21 */ 22public class GsonCase { 23 /** 24 * 序列化 25 */ 26 public static String serialize() { 27 MyBean bean = new MyBean(); 28 bean.setS("测试字符串"); 29 Calendar calendar = Calendar.getInstance(); 30 calendar.add(Calendar.HOUR_OF_DAY, -1); 31 bean.setD(calendar.getTime()); 32 33 List<MyBean> list = new ArrayList<MyBean>(); 34 list.add(bean); 35 Map<String, List<MyBean>> map = new HashMap<String, List<MyBean>>(); 36 map.put("data", list); 37 38 Gson gson = new GsonBuilder() 39 .serializeNulls() //序列化值为null的字段 40 .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式 41 .excludeFieldsWithModifiers(Modifier.STATIC)//根据修饰符过滤字段 42 .create(); 43 String result = gson.toJson(map); 44 System.out.println(result); 45 return result; 46 } 47 48 /** 49 * 反序列化 50 */ 51 public static void deserialize() { 52 String s = serialize(); 53 Gson gson = new GsonBuilder() 54 .setDateFormat("yyyy-MM-dd HH:mm:ss") //设置日期格式 55 .create(); 56 Type type = new TypeToken<Map<String, List<MyBean>>>(){}.getType(); 57 Map<String, List<MyBean>> map = gson.fromJson(s, type); 58 System.out.println(map); 59 60 //直接通过api获取相应数据 61 JsonElement element = JsonParser.parseString(s); 62 JsonArray data = element.getAsJsonObject().getAsJsonArray("data"); 63 JsonObject bean = data.get(0).getAsJsonObject(); 64 System.out.println(bean.get("s").getAsString()); 65 //... 66 } 67 68 public static void main(String[] args) { 69 serialize(); 70 deserialize(); 71 } 72 73}

GsonCase

1package com.inspur.demo.json; 2 3import java.util.Arrays; 4import java.util.Date; 5 6public class MyBean { 7 private String s = "字符串"; 8 private String s2; 9 private String s3 = "字符串3"; 10 private int i = 123; 11 private Integer i2; 12 private char c = '到'; 13 private char[] c2 = new char[]{'a', 'b'}; 14 private Date d = new Date(); 15 private Date[] d2 = new Date[]{new Date(), new Date()}; 16 public String getS() { 17 return s; 18 } 19 public void setS(String s) { 20 this.s = s; 21 } 22 public String getS2() { 23 return s2; 24 } 25 public void setS2(String s2) { 26 this.s2 = s2; 27 } 28 public String getS3() { 29 return s3; 30 } 31 public void setS3(String s3) { 32 this.s3 = s3; 33 } 34 public int getI() { 35 return i; 36 } 37 public void setI(int i) { 38 this.i = i; 39 } 40 public Integer getI2() { 41 return i2; 42 } 43 public void setI2(Integer i2) { 44 this.i2 = i2; 45 } 46 public char getC() { 47 return c; 48 } 49 public void setC(char c) { 50 this.c = c; 51 } 52 public char[] getC2() { 53 return c2; 54 } 55 public void setC2(char[] c2) { 56 this.c2 = c2; 57 } 58 public Date getD() { 59 return d; 60 } 61 public void setD(Date d) { 62 this.d = d; 63 } 64 public Date[] getD2() { 65 return d2; 66 } 67 public void setD2(Date[] d2) { 68 this.d2 = d2; 69 } 70 @Override 71 public String toString() { 72 return "MyBean [s=" + s + ", s2=" + s2 + ", s3=" + s3 + ", i=" + i + ", i2=" + i2 + ", c=" + c + ", c2=" 73 + Arrays.toString(c2) + ", d=" + d + ", d2=" + Arrays.toString(d2) + "]"; 74 } 75}

MyBean

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java将前端的json数组字符串转换为列表

记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )