首页 > 其他分享 >fastjson2自动转型

fastjson2自动转型

时间:2024-06-13 21:47:37浏览次数:22  
标签:fastjson2 return features bytes 转型 param 自动 序列化

新版本 fastjson2 auto-type 的写法。
自定义 Cache,或者写 RedisSerializer 估计会用到这个知识,


import cn.seaboot.commons.lang.Warning;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONReader;
import com.alibaba.fastjson2.JSONWriter;

/**
 * fastjson2 autoType tools
 * <p>
 * fastjson 白名单设置是有重要意义的,不要一次性放开所有程序包,
 * 尽可能地缩小白名单的范围,避免造成程序漏洞。
 * <p>
 * E.G.: FastJson fastJson = new FastJson("cn.seaboot.commons.core");
 *
 * @author Mr.css
 * @version 2023-09-13 10:41
 */
public class FastJson {

    /**
     * 包含各类序列化配置
     */
    private final JSONWriter.Feature[] features;
    /**
     * 反序列化拦截器
     */
    private final JSONReader.AutoTypeBeforeHandler filter;

    /**
     * 默认序列化的时候,写入全类名
     *
     * @param names 允许自动转型的包
     */
    public FastJson(String... names) {
        this(new JSONWriter.Feature[]{JSONWriter.Feature.WriteClassName}, names);
    }

    /**
     * -
     *
     * @param features 包含各类序列化配置
     * @param names    允许自动转型的包
     */
    public FastJson(JSONWriter.Feature[] features, String... names) {
        this.features = features;
        this.filter = JSONReader.autoTypeFilter(names);
    }

    /**
     * 序列化
     *
     * @param obj 需要序列化的对象
     * @return 序列化之后的数据
     */
    public byte[] serialize(Object obj) {
        return JSON.toJSONBytes(obj, features);
    }

    /**
     * 反序列化
     * <p>
     * 不在白名单的对象,程序上并不会立即报错,会返回 {@link com.alibaba.fastjson2.JSONObject}
     *
     * @param bytes 对象数据
     * @return 反序列化产生的对象
     */
    @SuppressWarnings(Warning.UNCHECKED)
    public <T> T deserialize(byte[] bytes) {
        return (T) JSON.parseObject(bytes, Object.class, filter);
    }

    /**
     * 反序列化
     * <p>
     * 不在白名单的对象,程序上并不会立即报错,会返回 {@link com.alibaba.fastjson2.JSONObject}
     *
     * @param clazz 与 auto-type 不一致的情况下,不会报错,优先使用这个类型
     * @param bytes 对象数据
     * @return 反序列化产生的对象
     */
    public <T> T deserialize(Class<T> clazz, byte[] bytes) {
        return JSON.parseObject(bytes, clazz, filter);
    }
}

标签:fastjson2,return,features,bytes,转型,param,自动,序列化
From: https://www.cnblogs.com/chenss15060100790/p/18246796

相关文章

  • 讯飞有一个可以根据描述文本自动生成PPT的AI接口,有趣
    文档:https://www.xfyun.cn/doc/spark/PPTGeneration.html 价格方面提供了免费1000点的额度,生成一次是10点,正好100次,如果要购买的话最低要购买1344元的,没有按量付费的模式,个人小开发者可买不起。 让我们跑起来玩玩,官方提供了python的sdk,下载到本地: 不想下载sdk的,我......
  • 让AI回答一下:程序员转型做烧烤有什么优势?AI是真能编呀!
    我让AI回答一下,程序员转型做烧烤有什么优势,AI真的给出答案,不好好像哪一条有优势,都和经营好烧烤店三不沾呢。带底色文字是贝格前端工场的评语。如果程序员转型成为烧烤店老板,他们可能会具有以下优势:1.技术应用:程序员在烧烤店经营中可以利用技术优势,例如建立自己的在线订餐......
  • 低代码开发平台:加速企业数字化转型的利器
    随着数字化时代的到来,企业数字化转型已经成为关乎生存和发展的关键议题。在这个背景下,低代码开发平台应运而生,为企业提供了高效、便捷的数字化转型途径。本文将探讨低代码开发平台如何加速企业数字化转型,并分析其优势与适用场景。什么是低代码开发平台? 低代码开发平台是一......
  • Ecahrts竖向柱状图实现自动滚动
     效果如下:1.首先声明一个timer定时器标识lettimer:NodeJS.Timer;//定时器2.再声明窗口展示的数量,yAxisIndex2用来记录当前index已经加了多少,方便再formatter中格式化标题的相关信息constdataZoomEndValue=6;//数据窗口范围的结束数值(一次性展示几个)letyAxis......
  • 组织创新|AI赋能敏捷实践,助力企业敏捷转型
    在工业5.0时代,随着项目变得越来越复杂,对效率的需求也在增长,致力于敏捷转型的组织正在寻求创新的解决方案来应对常见的挑战:工作量不平衡、低效的任务分配和知识孤岛等等。对此,AI等尖端技术的潜力可以帮助实现更高效、更绿色的以人为本的生产和运营,从而达到更高的可持续成功。本......
  • 搬运:python基于pywinauto实现PC端自动化 python操作微信自动化
    目录一、pywinauto安装和启动1.安装:2.backend选择和控件查看工具inspect介绍2.启动(实例化程序):以微信示例3.Application对象app的常用方法二、控件定位方法和控件可用方法2.1层级查找控件的方法2.2kwargs筛选条件2.3控件可用的方法属性三、具体使用举例1.对......
  • Windows Server 2012 R2部署网站后IIS,只要访问网址应用程序池就自动停止,浏览器页面提
     解决方案:1.查看windows日志通过文件资源管理器查看:打开文件资源管理器,找到“我的电脑”。右键点击“管理”。在弹出的窗口中,点击“事件查看器”。在事件查看器中,点击“Windows日志”即可查看各种日志信息 2.找到错误信息......
  • Android studio 自动复制生成的 apk
    KTS脚本//顶层build.gradle.ktsvalapkBaseName:String="VoiceAssistant"allprojects{project.extra.apply{set("apkBaseName",apkBaseName)}}//模块build.gradle.ktsandroid{ applicationVariants.all{......
  • 数字先锋 | SaaS服务“拎包入住”?央企数字化转型体验感拉满!
    数字化转型已成为企业生存和发展的“必修课”。作为国民经济的“压舱石”“顶梁柱”,国资央企正加快“上云用数赋智”步伐,引领新一轮的科技革命。中国电信天翼云携手中国信科集团,打造“拎包入住”式国云安全邮箱SaaS应用,为国资央企数字化转型树立典型标杆。今天我们一起走进中国信......
  • 科技改变生活,自动化获取校园官网活动
    此项目相当于全自动点击代替人工而已,代码很简单,请勿商业以及违法乱纪,没必要,这么几个仔不值得哈,每次看见群里面代乐跑与墙上发布代理签到签退就觉得,嗯,,,嗯,包括签到签退人工也可以拿到,自己分析一下网址即可,但是这样属于违法乱纪了,不公平了,处分警告,科技一定要用在合理合规的地方。希望......