使用GSON工具实现json和其他数据格式间转换
1 package gson;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import com.google.gson.Gson;
7 import com.google.gson.GsonBuilder;
8 import com.google.gson.reflect.TypeToken;
9
10 /**
11 * Gson:解析json工具基础用法加高级进阶
12 *
13 * ClassName: GsonUtils
14 * TypeToken:只是为了提取泛型的类型而已
15 * 控制缩进:final Gson gson = new GsonBuilder().setVersion(1.1).setPrettyPrinting().create();
16 * 调用setPrettyPrinting方法,改变gson对象的默认行
17 *
18 * @Description: TODO
19 * @author liuhl
20 * @date 2018年3月1日
21 */
22 public class GsonUtils {
23
24 public static final Gson gson = new GsonBuilder().create();
25
26 /* 基本数据类型的解析 */
27 int number = gson.fromJson("1", int.class);
28 double money = gson.fromJson("800.25", double.class);
29 boolean bool = gson.fromJson("true", boolean.class);
30 String str = gson.fromJson("kele", String.class);
31 /* 基本数据类型的解析 */
32
33 /* 基本数据类型的生成 */
34 String istr = gson.toJson(1);
35 String dstr = gson.toJson(9000.88);
36 String bstr = gson.toJson("true");
37 String str2 = gson.toJson("baihe");
38 /* 基本数据类型的生成 */
39
40 /* 实体类的解析与生成 */
41 Ticket ticket = new Ticket("2002", 33333.33, "1.1.230010", true);
42 String json = gson.toJson(ticket);
43 Ticket tick = gson.fromJson(json, Ticket.class);
44 /* 实体类的解析与生成 */
45
46 /* json转为数组 */
47 String jsonss = "['aa','bb','cc','dd']";
48 String[] ss = gson.fromJson(jsonss, String[].class);
49 String jsonsss = gson.toJson(ss);
50 /* json转为数组 */
51
52 /* json <----> List */
53 String ljson = "['username','age','data']";
54 List<String> list = gson.fromJson(ljson, new TypeToken<List<String>>() {}.getType());
55 String listjson = gson.toJson(list);
56 /* json <----> List */
57
58 /* 泛型的使用 */
59 User<Ticket> user = new User<Ticket>("10001", 25, ticket);
60 String userjson = gson.toJson(user);
61 User<Ticket> userticket = gson.fromJson(userjson, new TypeToken<User<Ticket>>() {}.getType());
62 /* 泛型的使用 */
63
64
65
66
67 public static void main(String[] args) {
68 /*扩展*/
69 List<Ticket> ticList = new ArrayList<>();
70 ticList.add(new Ticket("3003", 444.444, "2.2.30003", false));
71 ticList.add(new Ticket("4004", 444.444, "4.4.30003", true));
72 ticList.add(new Ticket("5005", 444.444, "5.5.30003", false));
73 ticList.add(new Ticket("6006", 444.444, "6.6.30003", true));
74 ticList.add(new Ticket("7007", 444.444, "7.7.30003", false));
75
76 User<List<Ticket>> userlistTic = new User<List<Ticket>>("lhl", 28, ticList);
77 String json = gson.toJson(userlistTic);
78 User<List<Ticket>> ticuserList = gson.fromJson(json, new TypeToken<User<List<Ticket>>>(){}.getType());
79 /*扩展*/
80 System.out.println(ticuserList.age);
81 System.out.println(ticuserList.usercode);
82 for (Ticket ticket : ticuserList.data) {
83 System.out.println(ticket.dealCode);
84 System.out.println(ticket.instnCode);
85 System.out.println(ticket.dealFlag);
86 System.out.println(ticket.money);
87 }
88 }
89 }
使用GSON工具实现json和其他数据格式间转换的更多相关文章
- json数据与Gson工具类的使用
JS中使用JSON JSON对象 --> JSON字符串:JSON.stringify(对象) JSON字符串 --> JSON对象:JSON.parse(JSON字符串) <scr ...
- 让复杂Json数据和对象自由转换 --- Gson
Gson是谷歌用于对Json操作的库,里面有着强大而又方便的功能,最常用的就是 fromJson():将json数据转化为对象: toJson():将对象转化为json数据! 对于普通的json数据使 ...
- Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mengzhengbin520.blog.51cto.com/7590564/12 ...
- [转]用Gson来解析Json数据
转自太阳尚远的博客:http://blog.yeqianfeng.me/2016/03/02/use_gson_to_parse_json/ 在我们实际开发中像Json和XML这两种格式的数据是最常见 ...
- GSON工具类
import java.util.Map; import com.google.gson.reflect.TypeToken; import com.google.gson.FieldNamingPo ...
- gson笔记 解析json数据
gson中负责json数据解析的类是JsonReader. Json格式有两种结构,一种是对象(键值对的组合,无序),另外一种是数组(值的有序集合). 因此针对这两种格式,JsonReader提供了不 ...
- Json与javaBean之间的转换工具类
/** * Json与javaBean之间的转换工具类 * * {@code 现使用json-lib组件实现 * 需要 * json-lib-2.4-jdk15.jar * ...
- 使用Gson送解析Json格式
Java bean: package com.jingle.a; public class Person { public String name; public int age; public Pe ...
- json、xml ---- 数据格式生成类
自己写的一个生成json/xml 格式数据的类,可用于api数据传输: <?php class Response{ /** *生成指定数据格式 *@param intval $code 状态码 ...
随机推荐
- Python:从入门到实践--第九章-类--练习
#.餐馆:创建一个名为Restaurant的类,其方法_init_()设置两个属性:restaurant_name和cuisine_type. #创建一个名为describe_restaurant的方 ...
- 2018-2019-2 20165313 Exp2 后门原理与实践
实践基础问题回答 (1)例举你能想到的一个后门进入到你系统中的可能方式? 应用程序设定后门,用户安装后,后门就可以进入.例如课堂上讲到的百度. (2)例举你知道的后门如何启动起来(win及linux) ...
- 前端的UI框架
iView 框架 使用场景 iView 主要适合大中型中后台产品,比如某产品的运营平台.数据监控平台.管理平台等,从工程配置.到样式布局,甚至后面规划的业务套件,是一整套的解决方案,所以它可能不太适合 ...
- django使用ckeditor上传图片
1.在模型类中设置字段为富文本类型,这里需要注意引入的是RichTextUploadingField,以允许上传图片,需要和RichTextField区分开 from ckeditor_uploade ...
- 求最小环 —— 并查集 与 Floyd
对于一个图,如何求出其中的最小环(不包括一元环)? 很显然,对于一个无向图,每一条边都是一个二元环:对于有向图,可以考虑从每一个点出发,用DFS求出它到自己的距离,如果遍历了$N$个点仍未便利到自己, ...
- redis初步了解
redis是什么 redis是一个开源的内存数据库,拥有非常优秀的性能 如何安装redis 在linux下安装软件有几种方式:二进制文件安装和源码安装,由于redis不依赖任何外部库,所以源码安装非常 ...
- Git与Github的连接与使用
下面继续,使用git 将项目上传到GitHub上 首先要有GitHub账号,这就不用说了,没有的先注册,地址:https://github.com 没有仓库的话,先新创建一个仓库 填写新仓库名称,备注 ...
- 快速搞定Word,提高你的工作效率
调整字体大小快捷键 ctrl+中括号 []分别减小字体加大字体 取消显示回车符号 文件->选项->显示->取消段落标记 对比两列内容是否相同 在第三列输入以下公式=IF ...
- linux 服务器命令
sudo apt-get update sudo apt-get install sudo passwd 123456 设置root密码 su root 切换root用户 netstat -anlp ...
- idea 启动项目提示 Command line is too long. Shorten command line for Application or also for Spring Boot default configuration.
在.idea 文件夹中打开workspace.xml文件找到<component name="PropertiesComponent">,在标签里加一行 <pr ...