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

如何禁用从数字到字符串的Gson反序列化

从数字到字符串的Gson反序列化可以通过Gson的自定义适配器进行禁用。

要禁用从数字到字符串的反序列化,可以通过自定义一个适配器,然后在适配器中控制反序列化的行为。以下是一个示例代码:

代码语言:txt
复制
import com.google.gson.*;

public class NumberToStringDeserializer implements JsonDeserializer<Number> {
    @Override
    public Number deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
        if (json.isJsonPrimitive()) {
            JsonPrimitive jsonPrimitive = json.getAsJsonPrimitive();
            if (jsonPrimitive.isNumber()) {
                throw new JsonParseException("Cannot deserialize number as string");
            }
        }
        return json.getAsNumber();
    }
}

在这个自定义适配器中,我们首先判断JsonElement是否为JsonPrimitive,然后再判断JsonPrimitive是否为Number类型。如果是Number类型,就抛出一个JsonParseException,即禁止将数字反序列化为字符串。

接下来,我们需要在Gson对象中注册这个适配器:

代码语言:txt
复制
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Number.class, new NumberToStringDeserializer());
Gson gson = gsonBuilder.create();

通过以上代码,我们将自定义适配器注册到了Gson对象中,使得Gson在反序列化时会使用我们自定义的适配器进行判断和处理。

使用这个定制化的Gson对象进行反序列化时,如果遇到将数字反序列化为字符串的情况,就会抛出JsonParseException异常。

这种方法可以灵活地控制Gson的反序列化行为,保证了数字不会被误解析为字符串。

希望以上解答对您有帮助。如需了解更多关于Gson的信息,可参考腾讯云的相关文档:Gson相关文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Gson 系列文章

-空值映射 我们来看一个有趣问题,Gson中是如何处理 null 情况?...alternate 属性是用在反序列化,也就是说 JSON Java 类过程。Gson 会帮我们匹配 JSON 中命名,并尝试找到一个字段映射。...Gson Advanced — 简单自定义序列化 本文将实现一个自定义 Gson serialization 过程,有些情况我们可能会考虑自定义,例如:和 server 通信时,有时候不需要传递一个完成...自定义序列化 有个这样场景:App 服务器获取一个列表,用户可以订阅列表中每一项,但是要将订阅某一条发送给服务器同步。...Advanced — 通过 @JsonAdapter 自定义()序列化 之前我们介绍了如何使用 Gson 来自定义()序列化和自定义实例创建。

15.4K10

穿越到东汉末年Jackson

它也可以用于将JSON字符串转换为等效Java对象。Gson可以处理任意Java对象,包括您没有源代码预先存在对象。...Gson: 吾观取汉上之地,易如掌。我主刘豫州躬行仁义,不忍夺同宗之基业,故力辞之。刘琮孺子,听信佞言,暗自投降,致使曹操得以猖獗。...东吴FastJson fastjson是阿里巴巴开源JSON解析库,它可以解析JSON格式字符串,支持将Java Bean序列化为JSON字符串,也可以JSON字符串序列化JavaBean。...后赤壁时代, Jackson Gson FastJson 三足鼎立,我们来看看各自优缺点吧 Jackson,fastjson Gson比较 jackson:反射+反射缓存、良好stream支持、高效内存管理...让我们通过一个简单例子来看看这个注解是如何工作: image.png 这里我们有一个 POJO,我们想将带有fName、f_name和firstName 等值JSON 反序列化 POJOfirstName

2K20
  • 用了几年 Fastjson,我最终替换成了Jackson!

    关于jackson和gson比较文章有很多,stackoverflow上自行搜索,下面仅推荐几篇blog: jackson vs gson JSON in Java the ultimate json...Deserialization fastjson将json字符串序列化成Java Bean通常使用com.alibaba.fastjson.JSON静态方法(JSONObject和JSONArray...禁用fastjsonAUTOTYPE特性,即不按照json字符串@type自动选择反序列化类 Feature.IgnoreAutoType 关闭 - - jacksonPolymorphicDeserialization...注意SerializationFeature.WRITE_NULL_MAP_VALUES2.9已废弃,且会被JsonInclude.Include给覆盖 序列化枚举时使用枚举类型toString()...关闭 - - jackson有一个类似的特性JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS可以将数字作为字符串输出,但没有覆盖所有非String类型 序列化时忽略会抛异常

    5.1K10

    FastJson 又被爆出漏洞,是时候抛弃了

    Fastjson是阿里巴巴开源JSON解析库,它可以解析JSON格式字符串,支持将Java Bean序列化为JSON字符串,也可以JSON字符串序列化JavaBean。...Fastjson存在远程代码执行漏洞,autotype开关限制可以被绕过,链式序列化攻击者精心构造反序列化利用链,最终达成远程命令执行后果。...safeMode会完全禁用autotype,无视白名单,请注意评估对业务影响) 0x05 时间线 2020-05-28 360CERT监测到业内安全厂商发布漏洞通告 2020-05-28 360CERT...,它可以解析JSON格式字符串,支持将Java Bean序列化为JSON字符串,也可以JSON字符串序列化JavaBean。...GoogleGson是最慢,差距较大。

    76910

    SpringBoot序列化和反序列化

    ,它canRead()方法返回true,然后它read()方法会请求中读出请求参数,绑定readString()方法string变量中。...流程图如下: 前端发来请求后,先调用HttpInputMessage输入流中获取Json字符串,然后在HttpMessageConverter中把Json转换为接口需要形参类型。...); System.out.println(numList.get(0)); } 这是因为在反序列化过程中,Gson会根据待解析类型定位具体TypeAdaptor类,并通过该类...read方法组装成最后对象,由于Map对应是Object,这里Gson最终定位内置ObjectTypeAdaptor类,该类关键代码如下:我们可以看到,数值类型(NUMBER)全部被转换成了...step1:重写TypeAdapter中read方法,主要是修改数字处理逻辑 case NUMBER: /** * 改写数字处理逻辑,将数字值分为整型与浮点型。

    2.3K40

    人生苦短,我用Gson

    2、Gson基本用法 gson主要提供了fromJson和toJson两个方法,fromJson用于反序列化,toJson用于把json序列化为Json字符串。...:18} 2、暴露序列化注解@Expose 使用此注解时就可以选择性序列化属性,前面介绍方法都是直接使用new Gson(),toJson()和fromJson()方法,这会将全部字段序列化或反序列化...); System.out.println(json); } 输出--》 {"moi":"1500","name":null} 5、数字类型处理 如前面所提到一点,数字类型转换时,会出现精度问题...,由于Map中字段声明类型是Object,最终Gson会定位内置ObjectTypeAdaptor类,我们来分析一下该类逻辑过程。...五、总结 Gson是Google公司发布一个开放源代码Java库,主要用途为序列化Java对象为JSON字符串,或反序列化JSON字符串成Java对象。

    2.1K50

    如何更好使用Gson

    gson是Google开源一个Java序列化库,它具有以下特点: 使用简单,只需要掌握toJson()和fromJson()两个方法就可以实现Java对象和JSON字符串之间序列化和反序列化 允许将现有的不可修改对象与...案例分享 null转为空字符串 在我们使用过程中,遇到过这样情况对于一个对象,在做序列化时候,如果遇到了某个item为null,那么gson序列化出来结果中就不会包含这个属性,这看起来很合理,不过对于我们项目而言...此时前端就会展示为「用户没有姓名信息」,如果我把name设置成空字符串,那么序列化结果就会不同。...结果 错误信息写很清楚,我们isVip字段是一个Boolean类型,但是json中却是数字类型,gson没办法识别了。 这时我们可以让node服务来修改,也可以选择自己做适配。...讨论 最后留一个问题大家可以和我一起讨论,我们在做反序列化时还遇到了BT字符串null,它本身所属字段是Map类型,这样Adapter应该怎么写呢?

    1.1K20

    文本、图像音视频,AIGC技术将如何重构我们数字世界?

    例如互联网诞生起就催生了在线教育、数字娱乐和社交网络等新兴行业,进一步推动了人类交流和信息传输领域发展。...5G 技术普及,也使得人们将能够更智能地与物联网、无人机、自动驾驶汽车等连接,这不仅催生了智能交通、智能物流、智能制造等新产业链,而且也让传统行业趋向数字化、自动化方向转型。...以生产工具为标志生产力发展是社会存在根本柱石,也是历史第一推动力。这是马克思主义关于生产力理论经典观点。历史进步和社会变革都源于生产力和生产关系发展和变革。...而如今 AIGC 技术似乎就是革命性生产工具。 AIGC 技术正在经历新一轮变革浪潮,其交互方式也生成文本、代码、图片正朝着更多元、更自然形式上发展。...历史总在循环往复,互联网交互形式最初也是文本、图像、音视频再逐步发展如今互动音视频(直播)。

    74810

    如何更好使用Gson

    gson是Google开源一个Java序列化库,它具有以下特点: 使用简单,只需要掌握toJson()和fromJson()两个方法就可以实现Java对象和JSON字符串之间序列化和反序列化 允许将现有的不可修改对象与...案例分享 null转为空字符串 在我们使用过程中,遇到过这样情况对于一个对象,在做序列化时候,如果遇到了某个item为null,那么gson序列化出来结果中就不会包含这个属性,这看起来很合理,不过对于我们项目而言...此时前端就会展示为「用户没有姓名信息」,如果我把name设置成空字符串,那么序列化结果就会不同。...@gmail.com", "isVip":1 } 那么我们在反序列化时就会报错 [报错信息] 错误信息写很清楚,我们isVip字段是一个Boolean类型,但是json中却是数字类型,gson...讨论 最后留一个问题大家可以和我一起讨论,我们在做反序列化时还遇到了BT字符串null,它本身所属字段是Map类型,这样Adapter应该怎么写呢?

    1.5K00

    Gson:我爸是 Google

    01、前世今生 我叫 Gson,是一款开源 Java 库,主要用途为序列化 Java 对象为 JSON 字符串,或反序列化 JSON 字符串成 Java 对象。...2)可以序列化 140 万个对象集合。 3)可以反序列化包含 87000 个对象集合。 4)将字节数组和集合序列化限制 80K 提高 11M 以上。...5)JSON 中缺少字段将在反序列化后设置为默认值,引用数据类型默认值为 null,数字类型默认值为 0,布尔值默认为 false。 接下来,来看一个序列化集合例子。...使用 toJson() 序列化 Java 对象时,返回 JSON 字符串中没有空格,很紧凑。...也许,你在序列化和反序列化时候想要筛选一些字段,我也考虑这种需求了,特意为你准备了几种方案,你可以根据自己口味挑选适合你。 第一种,通过 Java 修饰符。

    91620

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

    与此同时,也带给我新思考,面对大量功能强大开源库,我们不能盲目地引入项目之中,众多开源框架中某个不稳定因素就足以让一个项目遭受灭顶之灾。...描述可以看出,Gson 是用于将 Java 对象与 JSON格式字符串数据相互转换 Java 库。它起初在Google 内部广泛使用在 Android 平台 和 Java 服务端上。...将 对象转化成 JSON字符串过程称为序列化,将JSON 字符串转化成对象过程称为反序列化。...字段;并且正常序列化 JSON 字符串是紧凑格式,节省字符串内存,使用 com.google.gson.GsonBuilder#setPrettyPrinting 方法之后最终输出 JSON 字符串是更易读格式...,也就是先存入先被遍历

    1.6K40

    Gson 笔记

    类里面只要有get和set方法,Gson完全可以将复杂类型jsonbean或beanjson转换,是JSON解析神器。...使用Java类对象进行序列化 JSON对象字符串 fromJson 第一个参数是JSON对象字符串,第二个参数是预期Java类型 预期Java对象 基本数据类型解析 Gson gson =...输出中可以看出,GSON能够序列化生成Course对象JSON标识静态内部类。输出最后一行显示GSON成功地将其反序列化。...Course对象course是使用外部类对象outstudent实例化。这个内部类对象被放置序列化和反序列化中,从而在控制台上产生结果。...尽管Java对象进行序列化/反序列化或JSON字符串GSON创建一个默认实例构造方法。

    3.7K10

    Java几种常用JSON库性能比较

    每次都在网上看到别人说什么某某库性能是如何如何好,碾压其他库。但是百闻不如一见,只有自己亲手测试过才是最值得相信。...序列化方法处理流程 简单介绍 选择一个合适JSON库要从多个方面进行考虑: 字符串解析成JSON性能 字符串解析成JavaBean性能 JavaBean构造JSON性能 集合构造JSON性能 易用性...类里面只要有get和set方法,Gson完全可以实现复杂类型jsonbean或beanjson转换,是JSON解析神器。...,json-lib对于json转换成bean还有缺陷, 比如一个类里面会出现另一个类list或者map集合,json-libjsonbean转换就会出现问题。...序列化方法处理流程 序列化:把对象转换为字节序列存储于磁盘或者进行网络传输过程称为对象序列化。 反序列化:把磁盘或网络节点上字节序列恢复对象过程称为对象序列化

    4.4K30

    Gson基本使用

    可以看到,Gson序列化都是调用 Gson.fromJson(...)方法,传入JSON字符串,以及这段JSON字符串对应Object类型。...反序列化后结果如下: 那么,如果一个Java Object里包含List类型变量,该如何序列化这个Object呢?答案是,和 2 一样就行了,无需为其内部List提供Type。 5....再来看下反序列化, 先定义一段JSON字符串,只给它一个变量值name,用User类来反序列化它,看得到结果会是什么。...有人不禁要问了,如果JSON字符串里某个变量值为null,反序列化结果会是什么呢?我测试过了,和没有的结果是一样。 7....序列化/反序列化过程中忽略某些变量 也许会出现这样需求,在将某个对象序列化时,对象中某些变量是不需要。有可能在反序列化某个JSON字符串时,某些变量值也是不需要

    53410

    重学springboot系列之JSON处理工具类

    性能比较:笔者看多很多关于这三个类库性能测试,总结如下: 序列化过程性能:fastjson >= jackson > GsonGson在数据并发量较大时会与其他二者有较明显差距。...反序列化性能:三者几乎不相上下,Gson略好一点 fastjson为人诟病问题:虽然fastjson速度上有一定优势,但是其为了追求速度,很大程度放弃了JSON规范性。...反序列化:在客户端将请求数据上传到服务端时候,自动处理JSON数据对象中字符串数字,将其转换为包含Date类型、Integer等类型对象。...序列化:按照指定格式、顺序等将实体类对象转换为JSON字符串 所以我们下面就给大家介绍一下jackson常用注解使用方法,帮助我们进行序列化和反序列化工作。...indent_output: false #某些类对象无法序列化时候,是否报错 fail_on_empty_beans: false #设置空如何序列化,见下文代码方式详解

    2.3K10

    网络升级宝典:SD-WANSASE,该如何升级未来就绪数字网络架构?

    升级现有网络设施,以支持云应用(M365等)加速与多云安全新一代广域网络架构正变为企业数字化转型升级最重要事项之一。...Gartner 在 2022 年 SD-WAN 魔力象限报告中指出:“负责网络基础设施和运营(I&O)IT决策者如果正在选择如何将分支机构和移动人员连接到企业网络及应用(SaaS),他们应该选择 SD-WAN...此外,Cisco ThousandEyes还提供了应用可用性洞察,通过路由和设备数据丰富了数字体验多维视图。...) 掌控其全数字化体验。...全新推出ThousandEyes WAN Insights是实现思科可预测网络愿景第一步,使企业IT部门能够被动式网络运维转向预防性网络运维,从而提高运营效率并保障应用体验。

    70240
    领券