Java操作JSON数据(2)--Gson操作JSON数据
程序员文章站
2024-02-07 09:05:28
Gson是Google公司发布的一个开发源码的Java库,可用于将Java对象转换为JSON字符串,也可用于将JSON字符串转换为对应的Java对象。本介绍下Gson的基本使用方法,包括序列化和反序列化;文中所使用到的软件版本:Java 1.8.0_191、Gson 2.8.6。 1、引入依赖
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(); } }
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) + "]"; } }
上一篇: Scrapy中的Request和日志分析
下一篇: 关于python中的增量赋值的理解
推荐阅读
-
Java操作JSON数据(2)--Gson操作JSON数据
-
Java Servlet生成JSON格式数据并用jQuery显示的方法
-
mysql-java解析 新浪微博Json数据,获取uid和text
-
2.springboot:返回json数据
-
SpringBoot - Jackson、Gson、fastJson返回JSON数据
-
数据库中经常用到的操作和管理数据库的语句总结第1/2页
-
数据库优化-java操作mysql 查询优化问题
-
php中操作json格式数据转换实现代码
-
数据分析系统DIY2/3:本地64位WIN7+DEVC++编译程序操作VMwareCen
-
Android中构建JSON数据(构建篇三:Gson构建)