首页
学习
活动
专区
圈层
工具
发布

如何更好的使用Gson

今天想分享一些工作中遇到的关于gson的坑,这么说其实不太准确,因为不能算是gson的坑,更多的是因为旧代码产生了一些不规范的数据导致使用gson时遇到了一些问题。...gson简介 可能有的同学不了解gson,所以在分享坑之前先来介绍一下gson,已经熟练使用gson的同学可以直接跳到下一部分了。...JSON互相转换 对Java的泛型支持的很好 允许自定义一些对象的表现形式 支持复杂对象的序列化 使用gson 那现在我们就来体验一下gson的第一个特性,使用简单。...在使用gson之前,我们需要添加依赖,我们的项目中使用的是Maven管理依赖,所以会在pom.xml文件中插入以下代码: com.google.code.gson...那现在我们已经学会gson的基础用法了,接下来就进入正题,分享几个我在使用过程中遇到的实际问题以及解决方案。

1.9K00

如何更好的使用Gson

今天想分享一些工作中遇到的关于gson的坑,这么说其实不太准确,因为不能算是gson的坑,更多的是因为旧代码产生了一些不规范的数据导致使用gson时遇到了一些问题。...gson简介 可能有的同学不了解gson,所以在分享坑之前先来介绍一下gson,已经熟练使用gson的同学可以直接跳到下一部分了。...JSON互相转换 对Java的泛型支持的很好 允许自定义一些对象的表现形式 支持复杂对象的序列化 使用gson 那现在我们就来体验一下gson的第一特性,使用简单。...在使用gson之前,我们需要添加依赖,我们的项目中使用的是Maven管理依赖,所以会在pom.xml文件中插入以下代码: com.google.code.gson...那现在我们已经学会gson的基础用法了,接下来就进入正题,分享几个我在使用过程中遇到的实际问题以及解决方案。

1.4K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Retrofit2 & RxJava2实现单文件和多文件上传

    Retrofit2 是目前Android开发主流的网络库,RxJava2也是目前开发者使用的比较多用来更优雅实现异步的库,因为最近业务需求有用到这两个库,就简单分享下它的一个实际使用场景—上传文件 [TOC...] 集成RxJava2和Retrofit2 // Rx compile rootProject.ext.dependencies["rxjava"] compile rootProject.ext.dependencies...gson = new Gson(); for (File file : files) { UploadFileRequestBody uploadFileRequestBody...的Observer的抽象类,主要是用来收到Rxjava2的事件: /** * 上传文件的RxJava2回调...总结 通篇代码实现很多,但可以看到使用Retrofit2和RxJava2的结合起来使用还是挺方便的,再也不用自己去控制线程的切换了,也不用去关注http的具体实现,少写了不少代码,实现起来也优雅不少,希望这篇文章能帮助到大家

    2.9K40

    人生苦短,我用Gson

    :18} 2、暴露序列化注解@Expose 使用此注解时就可以选择性的序列化类的属性,前面介绍的方法都是直接使用new Gson(),toJson()和fromJson()方法,这会将全部的字段序列化或反序列化...public final class ObjectTypeAdapter extends TypeAdapter { public static final TypeAdapterFactory...所以想在不改变源码的基础上,实现数值类型的正确转换,需要新增一个适配器。...另外一点可以看出当类型为BEGIN_OBJECT时ObjectTypeAdapter返回的Gson自定义的map类型LinkedTreeMap,如果使用时用到强转为HashMap会报错,由于我们使用的都是...Gson核心jar包不到1M,非常精简,但提供的功能无疑是非常强大的,如果使用JDK自带的JSON解析API,使用起来相对比较繁琐一点,而且代码量较多,推荐大家可以尝试使用。

    2.4K50

    gson参数走私浅析

    大部分基本类型的TypeAdapter都有一个TypeAdapterFactory:例如MapTypeAdapterFactory主要用于解析map类型的数据:对于类似自定义User的解析,一般情况下会在...ReflectiveTypeAdapterFactory进行处理,查看其read方法的实现,首先如果 JSON 值不为 NULL,方法使用 this.constructor.construct() 创建新...然后使用 while 循环遍历 JSON 对象中的所有字段。...0x02 参数走私场景当使用ReflectiveTypeAdapterFactory处理时,如果在set操作时使用了已存在的键,则新值会替换旧值,原有的键值对会被新的键值对覆盖。...b"activityId"额外认为是一个独立的键,而取到了前者,而fastjson因为忽略了无关的\b仍正常解析获取到了后者,利用这一点差异完成了参数走私:此外,在将JSON反序列化成Java对象时没有正确的解析时

    42410

    Spring Boot中使用Swagger CodeGen生成REST client

    Spring Boot中使用Swagger CodeGen生成REST client Swagger是一个非常好用的API工具,我们会使用Swagger来暴露API给外界测试,那么有没有简单的办法来生成对应的调...本文我们将会举例说明如何通过OpenAPI 规范定义文件自动生成REST Client。 什么是Open API规范定义文件呢?...正确定义后,使用者可以使用最少的实现逻辑来理解远程服务并与之交互。...然后,文档生成工具可以使用OpenAPI定义来显示API,代码生成工具可以使用各种编程语言,测试工具和许多其他用例来生成服务器和客户端。...– OkHttp + Gson retrofit (Obsolete) – Retrofit1/OkHttp + Gson retrofit2 – Retrofit2/OkHttp + Gson rest-template

    3.5K20

    从零开始实现一个 mini-Retrofit 框架

    Gson来解析,以及网络请求的异步回调 NetCallback 我们不直接使用OkHttp提供的Callback 而是在内部简单的做了封装转换成项目自己的NetCallback,因为对项目的开发人员来说...package retrofit2; import java.lang.annotation.Annotation; import java.lang.reflect.InvocationHandler...,当用户设置了不同的注解,在内部我们使用OKHttp调用相应的方法。...3.4 实现ConverterFactory 解耦Json转换 在上面的例子中,我们直接在框架Retrofit中使用了Gson库做Json转换,但作为一个框架来说 我们不希望直接强耦合一个第三方Json...这个功能相当于让Retrofit框架支持 对方法返回类型的自定义适配,和Converter接口一样的思路,我们在框架可以定义一个 CallAdapter接口,让应用层来具体实现并传入 package retrofit2

    2.2K10
    领券