使用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 状态码 ...
随机推荐
- SQLI DUMB SERIES-13
(1)检测闭合方式 通过 ') 闭合. (2)尝试输入 admin')# 无回显.尝试报错注入, 爆表payload: admin') and extractvalue(1,concat(0x7e,( ...
- javascript的加减乘除结果会有误差,在两个浮点数相加的时候会比较明显。以下函数返回较为精确的计算结果
加法函数(返回值:arg1加arg2的精确结果 ) function accAdd (arg1, arg2) { var r1, r2, m, c try { r1 = arg1.toString( ...
- 4th week——grid-layout
- mysql安装杂记
绿色版安装 先进入bin目录下初始化 命令:mysqld -initialize-insecure mysqld --initialize --user=mysql --console 初 ...
- 入学java的第一天
登录http://www.oracle.com,下载JDK(J2SE) JDK 1.0,1.1,1.2,1.3,1.4 1.5(JDK5.0) 支持注解.支持泛型 1.6(JDK6.0)Server2 ...
- 使用LNMP架构部署动态网站环境(源代码安装)
- 迭代器使用【阿里JAVA开发手册】
调用迭代器的remove的方法(它的方法实现是:调用ArrayList的remove(index)方法 ) 然后游标cursor相应的进行减1操作
- edgedb 内部pg 数据存储的探索 (五) 运行进程列表信息
做为一个简单的记录,方便后期分析学习 当前包含了一个timescale 的extension 可以不用关注 信息 ps -ef |grep edgedb edgedb 10559 24858 0 4月 ...
- magento 1.9 上传后图片前后台无法正常显示
1.上传后图片不显示,设置 允许 flash 2.保证php 执行是内存大小至少为为128M,多种方式设置,这里以init_set为例子,在index.php 加入下面一行代码,根据情况而定 ini_ ...
- Azure DevOps Server/Team Foundation Server
TFS wasn't designed specifically to support a requirements management process. Epics are like big st ...