首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

人生苦短,我用Gson

:18} 2、暴露序列化注解@Expose 使用此注解时就可以选择性的序列化类的属性,前面介绍的方法都是直接使用new Gson(),toJson()和fromJson()方法,这会将全部的字段序列化或反序列化...in) throws IOException { JsonToken token = in.peek(); switch (token) { case BEGIN_ARRAY:...throws IOException { JsonToken token = in.peek(); switch (token) { case BEGIN_ARRAY...另外一点可以看出当类型为BEGIN_OBJECT时ObjectTypeAdapter返回的Gson自定义的map类型LinkedTreeMap,如果使用时用到强转为HashMap会报错,由于我们使用的都是...Gson核心jar包不到1M,非常精简,但提供的功能无疑是非常强大的,如果使用JDK自带的JSON解析API,使用起来相对比较繁琐一点,而且代码量较多,推荐大家可以尝试使用。

2.2K50

Gson 解析 Json 容错策略

今天就在这篇文章里统一解答,并且给出解决方案。 二. GSON 数据容错实例 就像前文中介绍的一样,GSON 已经提供了一些简单的注解,去做数据的容错处理。...简单来说,TypeAdapter 是支持流的,所以它比较省内存,但是使用起来有些不方便。...而 JsonSerializer 和 JsonDeserializer 是将数据都读到内存中再进行操作,会比 TypeAdapter 更费内存,但是 API 使用起来更清晰一些。...虽然 TypeAdapter 更省内存,但是通常我们业务接口所使用的那点数据量,所占用的内存其实影响不大,可以忽略不计。...那拍脑袋想,如果 Gson 有简单的容错,那我们将这个解析的字段类型定义成 String,是不是就可以做到了?

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

    羊皮书APP(Android版)开发系列(十四)Gson解析json很简单,还在手动的写实体类吗?

    不得不说,Gson用起来确实挺方便的,但是最近发现很多人在使用Gson的时候,会出现各种问题,尤其是新手,下面我给出几个问题的解决方法,希望对你有用。...下载地址是:https://github.com/google/gson Gson如何将json字符串解析为Object: String jsonStr="";//json字符串 Gson gson...字符串: String jsonStr = new Gson().toJson(Result.class); Gson将json字符串转为Object时候,经常会出现异常,如json字符串为空、json...*/ public class GsonUtils { public static Object fromJson(String jsonStr,Class clazz){ Object...在Android studio中使用GsonFormat插件会很easy,GsonFormat安装和使用都很简单。

    81430

    Android避坑指南,Gson与Kotlin碰撞出一个不安全的操作

    问题的来源 上周一个群有个小伙伴,遇到了一个Kotlin写的Bean,在做Gson将字符串转化成具体的Bean对象时,发生了一个不符合预期的问题。...我们传递了一个json字符串,但是没有包含key为name的值,并且注意: 在Person中name的类型是String,也就是说是不允许name=null的 那么上面的代码,我运行起来结果是什么呢?...那只能去Gson的源码中取找答案了。 找到其怎么做的,其实就相当于解答了我们文首的问题。 追查原因 Gson这样构造出一个对象,但是没有走父类构造这种,如果真是的这样,那么是极其危险的。...会让程序完全不符合运行预期,少了一些必要逻辑。 所以我们提前说一下,大家不用太惊慌,并不是Gson很容易出现这样的情况,而是恰好上例的写法碰上了,我们一会会说清楚。...看到这里,大家可能最大的收获就是了解Gson构建对象流程,以及以后写Bean的时候会注意提供默认的无参构造方法,尤其在使用Kotlin data class的时候。

    1.4K20

    如何更好的使用Gson

    gson简介 可能有的同学不了解gson,所以在分享坑之前先来介绍一下gson,已经熟练使用gson的同学可以直接跳到下一部分了。...JSON互相转换 对Java的泛型支持的很好 允许自定义一些对象的表现形式 支持复杂对象的序列化 使用gson 那现在我们就来体验一下gson的第一个特性,使用简单。...,我们的isVip字段是一个Boolean类型的,但是json中却是数字类型,gson没办法识别了。...它包含以下几种 BEGIN_ARRAY END_ARRAY BEGIN_OBJECT END_OBJECT NAME STRING NUMBER BOOLEAN NULL END_DOCUMENT 从名称上就可以分辨出来...BEGIN_ARRAY和END_ARRAY是对数组的标记,BEGIN_OBJECT和END_OBJECT是对对象的标记,NAME标记的是json中的「key」,STRING、NUMBER、BOOLEAN

    1.5K00

    Android Study 之 彻底解决 Gson解析 异常 :JsonSyntaxException

    前言 开发过程中,App常用的接收参数的时候,几乎大部分都是以json格式为主,那么有关解析json的方式有很多,Android端相对来说使用Gson比较多,而在解析过程中,如果你遇到规范的后台,那你大可放心随便浪...趟坑路,超神路 满怀信心的撸码,运行,app却提示了如下类型错误: com.google.gson.JsonSyntaxException 上来一看,Json格式错误?回头再仔细看下返回的Json。...DATEFORMAT_default = "yyyy-MM-dd HH:mm:ss"; /** * 使用默认的gson对象进行反序列化 * * @param json...IOException { JsonToken token = in.peek(); switch (token) { case BEGIN_ARRAY...这里需要将获取到的json再次进行格式化 new TypeToken>() { }); 结束 其实 度娘有度娘的好处 开发者 好多包括LZ 都是属于“百度开发者”但是这点并没有什么可傲娇的

    4.5K10

    如何更好的使用Gson

    gson简介 可能有的同学不了解gson,所以在分享坑之前先来介绍一下gson,已经熟练使用gson的同学可以直接跳到下一部分了。...JSON互相转换 对Java的泛型支持的很好 允许自定义一些对象的表现形式 支持复杂对象的序列化 使用gson 那现在我们就来体验一下gson的第一特性,使用简单。...结果 错误信息写的很清楚,我们的isVip字段是一个Boolean类型的,但是json中却是数字类型,gson没办法识别了。 这时我们可以让node服务来修改,也可以选择自己做适配。...它包含以下几种 BEGIN_ARRAY END_ARRAY BEGIN_OBJECT END_OBJECT NAME STRING NUMBER BOOLEAN NULL END_DOCUMENT 从名称上就可以分辨出来...BEGIN_ARRAY和END_ARRAY是对数组的标记,BEGIN_OBJECT和END_OBJECT是对对象的标记,NAME标记的是json中的「key」,STRING、NUMBER、BOOLEAN

    1.1K20

    Rest API: Json参数格式错误时显示Json原文

    后台提供API给前端调用,一般使用HttpMessageConverter把Json字符串转换成对象,如果存在格式问题则会抛出异常HttpMessageNotReadableException。...但是后台拿不到原始的Json字符串,不方便定位到确切的格式错误。 本文介绍一个简易方法,可以在出错时,展示Json原文信息。...但是做不到,因为在做Json读取的时候,InputStream已经被读取了,无法再次获取到body内容。所以只能通过自定义MessageConverter的方式。...name; private Integer age; private Boolean gender; private ListString> hobbies; } 如果收到错误格式的...: Expected BEGIN_ARRAY but was STRING at line 5 column 14 path $.hobbies 参考 How to read request.getInputStream

    1.9K20

    如何解决 java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

    这个错误通常指出程序遇到了一个不期待的状态,本例中即为在JSON解析时预期一个对象开始标记,却得到了一个字符串。...错误原因 这通常发生在使用像Gson这样的库来解析不正确格式的JSON字符串时。例如,我们期望解析的是一个JSON对象,但提供的数据实际上是一个纯字符串或其他格式。...// 示例错误代码 String jsonString = "\"这是一个字符串,而不是一个JSON对象\""; Gson gson = new Gson(); MyObject obj = gson.fromJson...// 修改后的代码 String jsonString = "{\"name\": \"猫头虎\", \"type\": \"博主\"}"; Gson gson = new Gson(); MyObject...参考资料 Gson官方文档 Java异常处理最佳实践 核心知识点总结 错误类型 原因 解决方法 java.lang.IllegalStateException JSON字符串格式错误 确保JSON格式正确

    5.9K10

    除了FastJson,你还有选择: Gson简易指南

    Gson 基本使用 使用 Gson 框架进行序列化与反序列操作,都离不开 com.google.gson.Gson 对象,它也是 Gson 框架的关键对象,提供的公共 API 具备了多种序列化和反序列方式...().create() 通常情况下,上面两种方式创建的 Gson 对象在进行序列化与反序列操作时行为都是一样的,但是第二种方式构建 Gson 对象时,允许进行额外的行为定制,比如格式化 JSON 字符串的输出内容..."); String toJson = gson.toJson(jsonObject); String exceptedJson = "{\"code\":400,\"message\":\"参数错误...那又该如何处理呢, 我们需要使用 Gson 的 另外一个 fromJson 方法:fromJson(String json, Type typeOfT) ,先看下使用方式 @Test public void...Gson 除了提供一些 API 供开发者使用之外,还有一些具有特性的注解可以使用,接下来就介绍在 Gson 中最常用的注解。

    1.3K30
    领券