解析工具Gson源码读后感,真实项目开发经验总结

 1  1 package gson;
 2  2
 3  3 import java.util.ArrayList;
 4  4 import java.util.List;
 5  5
 6  6 import com.google.gson.Gson;
 7  7 import com.google.gson.GsonBuilder;
 8  8 import com.google.gson.reflect.TypeToken;
 9  9
10 10 /**
11 11  * Gson:解析json工具基础用法加高级进阶
12 12  *
13 13  * ClassName: GsonUtils
14 14  * TypeToken:只是为了提取泛型的类型而已
15 15  * 控制缩进:final Gson gson = new GsonBuilder().setVersion(1.1).setPrettyPrinting().create();
16 16  * 调用setPrettyPrinting方法,改变gson对象的默认行
17 17  *
18 18  * @Description: TODO
19 19  * @author liuhl
20 20  * @date 2018年3月1日
21 21  */
22 22 public class GsonUtils {
23 23
24 24     public static final Gson gson = new GsonBuilder().create();
25 25
26 26     /* 基本数据类型的解析 */
27 27       int number = gson.fromJson("1", int.class);
28 28       double money = gson.fromJson("800.25", double.class);
29 29       boolean bool = gson.fromJson("true", boolean.class);
30 30       String str = gson.fromJson("kele", String.class);
31 31     /* 基本数据类型的解析 */
32 32
33 33     /* 基本数据类型的生成 */
34 34      String istr = gson.toJson(1);
35 35      String dstr = gson.toJson(9000.88);
36 36      String bstr = gson.toJson("true");
37 37      String str2 = gson.toJson("baihe");
38 38     /* 基本数据类型的生成 */
39 39
40 40     /* 实体类的解析与生成 */
41 41      Ticket ticket = new Ticket("2002", 33333.33, "1.1.230010", true);
42 42      String json = gson.toJson(ticket);
43 43      Ticket tick = gson.fromJson(json, Ticket.class);
44 44     /* 实体类的解析与生成 */
45 45
46 46     /* json转为数组 */
47 47      String jsonss = "[‘aa‘,‘bb‘,‘cc‘,‘dd‘]";
48 48      String[] ss = gson.fromJson(jsonss, String[].class);
49 49      String jsonsss = gson.toJson(ss);
50 50     /* json转为数组 */
51 51
52 52     /* json <----> List */
53 53      String ljson = "[‘username‘,‘age‘,‘data‘]";
54 54      List<String> list = gson.fromJson(ljson, new TypeToken<List<String>>() {}.getType());
55 55      String listjson = gson.toJson(list);
56 56     /* json <----> List */
57 57
58 58     /* 泛型的使用 */
59 59      User<Ticket> user = new User<Ticket>("10001", 25, ticket);
60 60      String userjson = gson.toJson(user);
61 61      User<Ticket> userticket = gson.fromJson(userjson, new TypeToken<User<Ticket>>() {}.getType());
62 62     /* 泛型的使用 */
63 63
64 64
65 65
66 66
67 67     public static void main(String[] args) {
68 68         /*扩展*/
69 69         List<Ticket> ticList = new ArrayList<>();
70 70         ticList.add(new Ticket("3003", 444.444, "2.2.30003", false));
71 71         ticList.add(new Ticket("4004", 444.444, "4.4.30003", true));
72 72         ticList.add(new Ticket("5005", 444.444, "5.5.30003", false));
73 73         ticList.add(new Ticket("6006", 444.444, "6.6.30003", true));
74 74         ticList.add(new Ticket("7007", 444.444, "7.7.30003", false));
75 75
76 76         User<List<Ticket>> userlistTic = new User<List<Ticket>>("lhl", 28, ticList);
77 77          String json = gson.toJson(userlistTic);
78 78          User<List<Ticket>> ticuserList = gson.fromJson(json, new TypeToken<User<List<Ticket>>>(){}.getType());
79 79          /*扩展*/
80 80          System.out.println(ticuserList.age);
81 81          System.out.println(ticuserList.usercode);
82 82          for (Ticket ticket : ticuserList.data) {
83 83             System.out.println(ticket.dealCode);
84 84             System.out.println(ticket.instnCode);
85 85             System.out.println(ticket.dealFlag);
86 86             System.out.println(ticket.money);
87 87         }
88 88     }
89 89 }
90  

原文地址:https://www.cnblogs.com/lhl-shubiao/p/gson.html

时间: 2024-10-14 00:40:22

解析工具Gson源码读后感,真实项目开发经验总结的相关文章

Gson 源码解读

开源库地址:https://github.com/google/gson 解读版本:2.7 Gson是一个可以用来将Java对象转换为JSON字符串的Java库.当然,它也可以把JSON字符串转换为等价的Java对象.网上已经有了不少可将Java对象转换成JSON的开源项目.但是,大多数都要求你在Java类中加入注解,如果你无法修改源码的话就比较坑爹了,此外大多数开源库并没有对泛型提供完全的支持.于是,Gson在这两个重要的设计目标下诞生了.Gson可以作用于任意的Java对象(包括接触不到源码

可视化工具gephi源码探秘(二)---导入netbeans

在上篇<可视化工具gephi源码探秘(一)>中主要介绍了如何将gephi的源码导入myeclipse中遇到的一些问题,此篇接着上篇而来,主要讲解当下通过myeclipse导入gephi源码的可行性不高以及熟悉netbeans,并把原本基于netbeans平台开发的gephi源码导入进netbeans后启动正常运行的过程,其中有遇到的不少问题和相应的解决方法. 前日工作梗概(还是沿着想把源码导入myeclipse的思路): 经过从各大子模块的pom.xml中筛选出符合条件的jar包写入项目下的p

可视化工具gephi源码探秘(二)

在上篇<可视化工具gephi源码探秘(一)>中主要介绍了如何将gephi的源码导入myeclipse中遇到的一些问题,此篇接着上篇而来,主要讲解当下通过myeclipse导入gephi源码的可行性不高以及熟悉netbeans,并把原本基于netbeans平台开发的gephi源码导入进netbeans后启动正常运行的过程,其中有遇到的不少问题和相应的解决方法. 前日工作梗概(还是沿着想把源码导入myeclipse的思路): 经过从各大子模块的pom.xml中筛选出符合条件的jar包写入项目下的p

Gson源码分析(贰) 类型获取和代码规范

我们使用Gson的时候基本是需要先定义一个数据模型,然后通过一个String流转化为我们OO的对象.那么对于一个框架来说,如何去获得用户想要的数据类型呢?并且我们又要如何通过这种既定的类型来构造出我们需要的对象?或许你的第一反应就是传递一个Clazz进去,然后通过反射的方法来获得我们的实际对象.跟着这个想法我们来实验一下: public <T>T createObject(Class<T> clazz) { try { return (T)clazz.newInstance();

[软件测试]网站压测工具Webbench源码分析

一.我与webbench二三事 Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能.Webbench使用C语言编写,下面是其下载链接: http://home.tiscali.cz/~cz210552/webbench.html 说到这里,我赶脚非常有必要给这个网站局部一个截图,如下图: 第一次看到这张图片,着实吃了一精!居然是2004年最后一次更新,我和我的小伙伴们都惊呆了.不过既然现在大家还都

我的jQuery源码读后感-jquery1.11.x 集成了 AMD

jquery1.11.x 集成了 AMD AMD 加入到了 jQuery, jQuery 把源码切分成各个逻辑模块. ready 整合成依赖 Deferred 的模块. 有些模块被切分成一些更加利于维护的片段. var 文件夹指定的模块只包含共享的变量声明. (function( global, factory ) { if( typeof module === "object" && typeof module.exports === "object&quo

Android应用之——谷歌官方Json解析工具Gson的使用

一.Gson简介 Gson(又称Google Gson)是Google公司发布的一个开放源代码的Java库,主要用途为串行化Java对象为JSON字符串,或反串行化JSON字符串成Java对象.也就是Java对象与json字符串间的互相转换,解析. 二.使用方法 Gson的应用主要为toJson与fromJson两个转换函数,而在使用这种对象转换之前需先创建好对象的类型以及其成员才能成功的将JSON字符串成功转换成相对应的对象.即先创建好对应的javabean,javabean中的字段与要转换的

Spring 源码解析之HandlerAdapter源码解析(二)

Spring 源码解析之HandlerAdapter源码解析(二) 前言 看这篇之前需要有Spring 源码解析之HandlerMapping源码解析(一)这篇的基础,这篇主要是把请求流程中的调用controller流程单独拿出来了 解决上篇文章遗留的问题 getHandler(processedRequest) 这个方法是如何查找到对应处理的HandlerExecutionChain和HandlerMapping的,比如说静态资源的处理和请求的处理肯定是不同的HandlerMapping ge

用Diff和Patch工具维护源码

在Unix系统下,维护源码版本可以使用很多方法,其中最常用的当然是大名鼎鼎的CVS,但实际上,简单的版本维护工作并没有必要使用复杂的CVS等专门的版本维护工具,Unix标配中的diff和patch工具就完全可以完成代码的简单备份和升级工作. diff以"行"为单位比较两个文本文件(也可以是目录比较),并将不同之处以某种格式输出到标准输出上:patch可以读入这种输出,并按照一定指令使源文件(目录)按照目标文件(目录)更新.Linux内核源码就是按照这种方式保持更新的,我们在www.ke