gson

GSON工具类

孤街浪徒 提交于 2020-03-09 08:30:19
import java.util.Map; import com.google.gson.reflect.TypeToken; import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; /** * <p>GSON工具类</p> * @author Wallis Wang * @version $Id: GsonUtil.java, v 0.1 2014年5月15日 下午5:41:20 wangqiang Exp $ */ public class GsonUtil { private static Gson gson = null; static { gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create(); } /** * 小写下划线的格式解析JSON字符串到对象 * <p>例如 is_success->isSuccess</p> * @param json * @param classOfT * @return */ public static <T> T

Java序列化的理解与学习

妖精的绣舞 提交于 2020-03-07 04:39:26
1.什么是Java序列化 Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比 JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列 化就能够帮助我们实现该功能。 必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。 所谓序列化其实就是将程序中的数据(对象)通过某种方式,保存到本地中。然后把Java对象转换为字节序列的过程称为对象的序列化。就像你寄一箱饼干,因为体积太大,就全压成粉末紧紧地一包寄出去,这就是序列化的作用。只不过JAVA的序列化是可以完全还原的。 2.什么情况下需要用到Java序列化 a)当你想把的内存中的对象保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候; 3.序列化实例 SimpleSerial,是一个简单的序列化程序,它先将一个Person对象保存到文件person.out中,然后再从该文件中读出被存储的Person对象,并打印该对象。 public class SimpleSerial { public static void main(String[]

Retrofit 是如何获取返回值 Call<T> 中的类型 T, 以提供给 Gson 使用的?

北城余情 提交于 2020-03-05 21:19:40
Call<T> 的类型 T 即 Response<T> 的类型 T,获得了 Call<T> 就能够正确输出给 Response<T> 。那么 Retrofit 是怎么做到的呢? 以下是 HttpServiceMethod<ResponseT, ReturnT> 中的 static 方法: static <ResponseT, ReturnT> HttpServiceMethod<ResponseT, ReturnT> parseAnnotations( Retrofit retrofit, Method method, RequestFactory requestFactory) { // 省略部分代码 // ... Type adapterType; // 解析 kotlin 语言中的返回值 if (isKotlinSuspendFunction) { Type[] parameterTypes = method.getGenericParameterTypes(); Type responseType = Utils.getParameterLowerBound(0, (ParameterizedType) parameterTypes[parameterTypes.length - 1]); if (getRawType(responseType) == Response

简单实用的对象转换复制工具(续)

时光怂恿深爱的人放手 提交于 2020-03-04 12:03:10
前文链接: https://my.oschina.net/jack90john/blog/3052715 接前文,有朋友提到说这个工具只实现了浅拷贝,在很多条件下不适合使用,这篇文章我们就来解决这个浅拷贝问题。 一、概念 首先我们得先要弄清楚什么是浅拷贝,什么是深拷贝。这里我们就不铺开说了,大致了解一下概念。 所谓浅拷贝就是指复制了原对象的引用,拷贝后的对象和原对象依然是指向同一地址和同一实例,这会导致一个问题就是,我在修改拷贝后的对象时原对象会同时发生变化。而深拷贝就不会存在上述问题,深拷贝是拷贝了原对象的值,拷贝后的对象和原对象完全独立开互不影响,所以我们修改拷贝后的对象时原对象不会发生任何变化。 二、思路 实现深拷贝有好几种方法,最常用的有: 序列化与反序列化, 重写克隆方法, 使用三方类库提供的方法。 我们一项一项的来看, 第一种方法又有几种方式,典型两种,一种是通过IO流来实现,另一种只通过Gson,FastJson,Jackson等将对象序列化成json后在反序列化成对象来实现。这里我想减少三方类库等使用所以排除第二种方式。使用IO流实现的方式待定。 第二种方法需要对每个对象重写克隆方法,在易用性上不如第一种方法,所以排除。 第三种方法使用第三方类库,Apache Commons Lang库提供了SerializationUtils中提供了对象的深拷贝方法

How to work around Gson serialization giving different results when using generic wildcards?

眉间皱痕 提交于 2020-03-03 12:37:31
问题 Consider this example: static class BaseBean { String baseField = "base"; } static class ChildBean extends BaseBean { String childField = "child"; } static class BaseBeanHolder { List <? extends BaseBean> beans; public BaseBeanHolder(List<? extends BaseBean> beans) { this.beans = beans; } } static class ChildBeanHolder { List <ChildBean> beans; public ChildBeanHolder(List<ChildBean> beans) { this.beans = beans; } } @Test public void mcve() { BaseBeanHolder baseHolder = new BaseBeanHolder

How to work around Gson serialization giving different results when using generic wildcards?

天大地大妈咪最大 提交于 2020-03-03 12:37:19
问题 Consider this example: static class BaseBean { String baseField = "base"; } static class ChildBean extends BaseBean { String childField = "child"; } static class BaseBeanHolder { List <? extends BaseBean> beans; public BaseBeanHolder(List<? extends BaseBean> beans) { this.beans = beans; } } static class ChildBeanHolder { List <ChildBean> beans; public ChildBeanHolder(List<ChildBean> beans) { this.beans = beans; } } @Test public void mcve() { BaseBeanHolder baseHolder = new BaseBeanHolder

最强常用开发库- JSON库详解

ぃ、小莉子 提交于 2020-03-03 09:32:20
本文为作者原创,转载请注明出处: https://www.cnblogs.com/pengdai/p/12185594.html 内容目录 JSON简介 JSON是什么 结构与类型 JSON优秀资源 JSON在线解析工具 JSON类库 性能测试对比 FastJson Fastjson 简介 Fastjson 特性 下载和使用 序列化一个对象成JSON字符串 反序列化一个JSON字符串成Java对象 对于日期的处理 Bean和数组转换 设置字段名 设置是否不序列化某字段 设置字段顺序 自定义序列化和反序列化 FastJson漏洞问题 JackSon JackSon简介 Jackson组件 Jackson的使用 序列化一个对象成JSON字符串 反序列化一个JSON字符串成Java对象 常用注解 GSON Gson简介 Gson的目标 Gson的使用 序列化 反序列化 自定义序列化和反序列化机制 参考文章 更多内容 最强常用开发库总结 - JSON库详解 JSON应用非常广泛,对于Java常用的JSON库要完全掌握。@pdai JSON简介 JSON是什么 JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本数据交换格式 JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,但是

Convert Java objects to JSON strings using gson

别等时光非礼了梦想. 提交于 2020-03-03 04:50:46
问题 I've found some example here which says how to convert json to java object but here I need to convert Java object to GSON I have a Java object and now I want to convert the Java object to Gson. How can I achieve this, please refer my code. Staff obj = new Staff(); Gson gson = new Gson(); I need to convert staff object to gson object This is my staff class public class Staff { private String name; private int age; private String position; private BigDecimal salary; private List<String> skills;

Convert Java objects to JSON strings using gson

喜夏-厌秋 提交于 2020-03-03 04:50:00
问题 I've found some example here which says how to convert json to java object but here I need to convert Java object to GSON I have a Java object and now I want to convert the Java object to Gson. How can I achieve this, please refer my code. Staff obj = new Staff(); Gson gson = new Gson(); I need to convert staff object to gson object This is my staff class public class Staff { private String name; private int age; private String position; private BigDecimal salary; private List<String> skills;

Convert Java objects to JSON strings using gson

丶灬走出姿态 提交于 2020-03-03 04:49:07
问题 I've found some example here which says how to convert json to java object but here I need to convert Java object to GSON I have a Java object and now I want to convert the Java object to Gson. How can I achieve this, please refer my code. Staff obj = new Staff(); Gson gson = new Gson(); I need to convert staff object to gson object This is my staff class public class Staff { private String name; private int age; private String position; private BigDecimal salary; private List<String> skills;