使用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 状态码 ...
随机推荐
- UITableView(自定义cell)试水心得
初次试水自定义cell的UITableView 实现目标 最终实现结果 界面复原度:98% 未能完全复刻的地方:下半部分的tableview与头部的控件间距上的误差 原因:在做table ...
- 微信小程序测试策略
一.测试前准备(环境搭建) 1.前端页面 微信Web开发者工具安装.授权测试用的微信号可预览和调试小程序... 可参考此文: 微信Web开发者工具-下载.安装和使用图解 2.管理后台 配置内网测试服务 ...
- Golang安装与环境的配置
(一) 不需FQ的情况 打开https://studygolang.com/ 下载相应的系统安装包. (二) 安装与环境配置 linux: 解压到指定目录: sudo tar zxvf [安装包的下载 ...
- angularjs - 自定义指令(directive)
自定义指令(directive) 使用 .directive 函数来添加自定义的指令. 要调用自定义指令,HTML 元素上需要添加自定义指令名. 例子:使用驼峰法来命名一个指令, demoDirect ...
- Mysql安装本地数据库
1.下载解压:https://dev.mysql.com/downloads/mysql/ 2.配置环境变量path: D:\workPrograms\mysql-8.0.16-winx64\bin ...
- Beff的学习
Beff介绍 BeEF,全称The Browser Exploitation Framework,是一款针对浏览器的渗透测试工具. 首先打开kali,直接点击beef图标打开beef 浏览器会默认弹出 ...
- Movist for Mac(高清媒体播放器)v2.0.7中文特别版
Movist for Mac中文破解版是目前Mac平台上最好用的视频播放器,功能强大简单好用.movist mac版拥有美观简洁的用户界面,提供多种功能,支持视频解码加速高品质的字幕,全屏幕浏览,是与 ...
- python 集成cython 简单测试
实际开发中我们可能需要集成c/c++ 编写的模块,我们可以通过cython 解决类似的问题 以下测试一个简单的c add 方法, 使用venv 同时构建为一个pip 包 环境准备 venv 初始化 ...
- Noname
版本: LayaAir IDE 2.0.1beta laya.core.js ___Laya ColorUtils LayaGLQuickRunner DrawTextureCmd Point Col ...
- sql server数据库入门
create database 学生信息 on primary //建立在主文件文件组 ( name='学生信息_data', filename='D:\2011上半年度\数据库\sql代码\xue ...