设为首页 加入收藏

TOP

今天,念念不忘一件事... ?在使用Fastjson-JSON#toJSONString序列化对象时,如何截取比较长的属性值串?(二)
2023-07-25 21:29:09 】 浏览:70
Tags:今天 ... Fastjson-JSON#toJSONString 何截取
ect object, Object fieldName, Type fieldType, int features) throws IOException { serializer.write( StringUtils.abbreviate(JSON.toJSONString(object),100)); } } View Code

 

然后,使用com.alibaba.fastjson.annotation.JSONField 注解。

    @JSONField(serializeUsing = StringAbbreviatingSerializer.class)
    private T data;

 

完了吗?我要补充——一并重写Result<T>的toString方法。彻底一劳永逸。

@Data
public class Result<T> implements Serializable {

    。。。。
    
    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}

 

 

这么改,对别的地方有影响吗?

要说明的是,加上这个注解后,对与http请求的响应值Result<T> 和 dubbo的响应值Result<T> 是不会有任何影响的。为什么?因为这两者的序列化不是fastjson,SpringMVC默认使用Jackson作为序列化工具;dubbo RPC默认启用的序列化方式是hessian2(实际不是原生的hessian2序列化,而是阿里修改过的hessian lite)。以上已亲测。

所以,放心用,放心使用fastjson  JSON#toJSONString(Result<T>) 去记录日志。妈妈再也不用担心我的日志爆屏了。

 

 

over! 

 

附:

使用fastjson提供的接口实现自定义的编解码器

在项目开发中经常会遇到一些业务需要对某些数据进行特殊的定制化处理,fastjson为我们提供了接口可以用于实现自定义的编解码器来完成我们的业务要求。

ObjectSerializer和ObjectDeserializer分别是fastjson的编码器和解码器接口。

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇看了我的 mybatis-plus 用法,全.. 下一篇2流高手速成记(之五):Springbo..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目