Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >巧用fastjson自定义序列化类实现字段的转换

巧用fastjson自定义序列化类实现字段的转换

作者头像
星痕
发布于 2018-09-12 03:56:57
发布于 2018-09-12 03:56:57
6.4K00
代码可运行
举报
文章被收录于专栏:JAVA后端开发JAVA后端开发
运行总次数:0
代码可运行

项目中突然需要增加另一个字段的查找,而这个查找需要查另一张表的记录。 但现在产品很多地方都要增加该字段,如何最快的实现该功能呢。 办法如下: 通过fastjson序列化时,增加该字段的序列化类,该序列化类通过CODE查找名称,并序列化到前端。

  • VO的功能修改
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Data
public class SysDictItemSelectVo implements Serializable{

    private static final long serialVersionUID = 1L;
    @JSONField(serializeUsing=ToSystemNameSerializer.class)
    private String systemName;

    public String getSystemName(){
        return this.getCode();
    }
    }
  • 序列化的类的属性
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import com.alibaba.fastjson.serializer.SerializeWriter;

import java.io.IOException;
import java.lang.reflect.Type;

public    class ToSystemNameSerializer implements ObjectSerializer {

    public static final  ToSystemNameSerializer instance = new  ToSystemNameSerializer();

    @Override
    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,
                      int features) throws IOException {
        SerializeWriter out = serializer.out;

        if (object == null) {
            out.writeNull();
            return;
        }

        //原来的值code
        String strVal = object.toString();
        System.out.println(strVal);
        //通过code查找相关名称,测试先写死值 
        String name="std";
        out.writeString(name);

    }
}

经测试,序列化正常,其他地方只需要在VO增加该注解即可.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.05.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
FastJson1&FastJson2反序列化利用链分析
写这篇文章的起因是在二开ysoserial的时候突然发现在Y4er师傅的ysoserial当中有两条关于FastJson的利用链,分别是FastJson1&FastJson2但是这两条利用链都不是像之前分析fastjson利用链一样,之前的利用链分析的是fastjson在解析json格式的数据时,通过构造恶意的json数据来对fastjson进行攻击,期间会涉及到1.2.24-1.2.80等不同版本的绕过以及额外数据包的依赖。而这里的FastJson1&FastJson2是利用FasJson当中某些函数的调用关系,结合java原生反序列化来对目标应用进行攻击的一种方式。
Al1ex
2024/08/05
2940
FastJson1&FastJson2反序列化利用链分析
SpringBoot - FastJson
​ fastjson提供了JSONField对序列化与反序列化进行定制,比如可以指定字段的名称,序列化的顺序。JSONField用于属性,方法方法参数上。JSONField的源码如下:
郭顺发
2021/12/17
1.8K0
解决SpringMVC使用fastJson后Long类型丢失精度的问题
原来项目不是用fastjson格式化,用的是fasterxml public void extendMessageConverters(List<HttpMessageConverter<?>> co
星痕
2018/09/12
3.2K0
fastjson详解
  fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
良辰美景TT
2018/09/11
3.4K0
fastjson详解
FastJSON 源码分析
Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、Android客户端等多种应用场景。
Yano_nankai
2018/10/08
1.1K0
fastjson:实现对java.nio.ByteBuffer数据类型的支持
该文介绍了如何利用FastJSON库实现Java对象序列化和反序列化,同时介绍了如何使用ByteBuffer来实现二进制数据的序列化和反序列化。此外,还提供了一个使用示例,以展示如何在实际项目中使用FastJSON库和ByteBuffer来实现对象序列化和反序列化。"
10km
2018/01/03
1.8K0
Fastjson 使用
fastjson 是阿里巴巴的开源 JSON 解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean序列化为JSON字符串,也可以从 JSON 字符串反序列化到 JavaBean。
acc8226
2022/05/17
2K0
FastJson - 序列化LocalDateTime初探
Json的序列化方式有很多种,常见的有FastJson、Gson、Jackson,下面将对FastJson的LocalDateTime序列化使用及源码进行分析讲解。
夹胡碰
2021/06/11
6.1K0
FastJson - 序列化LocalDateTime初探
用了几年的 Fastjson,最终替换成了 Jackson!
> 公众号:[Java小咖秀](https://t.1yb.co/jwkk),网站:[javaxks.com](https://www.javaxks.com)
Java小咖秀
2021/05/06
2.4K0
FastJson 笔记
观察该类的继承与实现关系,不难发现,JSONObject 实现了 Map 接口,而 json 对象中的数据都是以”键:值”对形式出现,可以猜想, JSONObject 底层操作是由Map实现的。
Remember_Ray
2020/03/09
4.5K0
fastJson的JSONField注解
然后是deserialize:默认为true,如果为false,反序列化时会忽略该属性
阿超
2022/08/16
1.5K0
fastJson的JSONField注解
fastjson全局序列化坑
今天遇到这样一个问题: 序列化出现了与预期不一致的效果,重现代码很简单,就返回一个list,包含几个对象
阿超
2022/08/17
1.2K0
fastjson全局序列化坑
fastjson:javabean按字段(field)序列化存储为Map并反序列化改进
需求说明 最近的项目应用到redis数据库,需要将java bean存储在redis数据库。因为需要对数据库中的某个字段进行修改,所以在redis上不能用简单的string类型存储,而要以hash类型
10km
2018/01/03
1.6K0
fastjson:javabean按字段(field)序列化存储为Map并反序列化
根据用户需求,使用fastjson实现Java Bean按字段序列化为json字符串,再根据该json字符串反序列化回Java Bean。
10km
2018/01/03
2K0
fastjson:javabean按字段(field)序列化存储为Map并反序列化
【问底】静行:FastJSON实现详解
还记得电影《功夫》中火云邪神的一句话:天下功夫,无坚不破,唯快不破。在程序员的世界中,“快”一直是大家苦苦修炼,竞相追逐的终极目标之一,甚至到了“不择手段”、“锱铢必较”的地步。 一直使用json游离于各种编程语言和系统之间。一个偶然的机会碰到了Fastjson,被他的无依赖、易使用、应用广等特性深深吸引的同时,更被他出奇的“快”所震惊,在java界犹如一骑绝尘,旁人只能望其项背。很自然的一个想法涌上心头:FastJSON为何如此之快?于是定神来拔一拔其实现,一则膜拜大师的杰作,二则虚心偷技,三则方便来者学
CSDN技术头条
2018/02/08
1.5K0
【问底】静行:FastJSON实现详解
用了几年的 Fastjson,我最终替换成了Jackson!
作者:larva-zhh 来源:www.cnblogs.com/larva-zhh/p/11544317.html
Java技术栈
2021/05/11
5.7K0
深入理解RPC之序列化篇--总结
上一篇《深入理解RPC之序列化篇--Kryo》,介绍了序列化的基础概念,并且详细介绍了Kryo的一系列特性,在这一篇中,简略的介绍其他常用的序列化器,并对它们进行一些比较。序列化篇仅仅由Kryo篇和总结篇构成可能有点突兀,等待后续有时间会补充详细的探讨。 定义抽象接口 public interface Serialization { byte[] serialize(Object obj) throws IOException; <T> T deserialize(byte[] bytes,
kirito-moe
2018/04/27
2.7K0
Fastjson内幕
原文出处:http://wenshao.iteye.com/blog/1142031
干货满满张哈希
2021/04/12
9170
Fastjson内幕
阿里fastjson框架基础
fastjson 是阿里巴巴公司开源的一个json序列化、反序列化轻量级框架,号称最快。 是因为其内置算法的增强,以及序列化时对class进行了细节的微妙处理,更多细节请查看其项目源码:https://github.com/alibaba/fastjson 常用方法示例:
青山师
2023/05/05
3010
编写一个spring-boot-starter-fastjson
starter的完整代码我放到了这里:https://gitee.com/VampireAchao/spring-boot-starter-fastjson.git
阿超
2022/08/21
4410
编写一个spring-boot-starter-fastjson
相关推荐
FastJson1&FastJson2反序列化利用链分析
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验