fastjson2全局配置长整型Long、日期Date、字符串String等默认序列化格式

fastjson2全局配置长整型Long、日期Date、字符串String等默认序列化格式

保证程序启动后立即执行如下代码

JSON.configWriterDateFormat("yyyy-MM-dd HH:mm:ss");
JSON.configReaderDateFormat("yyyy-MM-dd HH:mm:ss");
JSON.config(JSONWriter.Feature.WriteNullNumberAsZero, // Long等Number类型值为空序列化为0
        JSONWriter.Feature.WriteNullBooleanAsFalse, // Boolean类型值为空序列化为false
        JSONWriter.Feature.WriteLongAsString, // Long类型序列化为字符串
        JSONWriter.Feature.WriteNullListAsEmpty, // List类型值为空序列化为[]
        JSONWriter.Feature.WriteBigDecimalAsPlain,  // BigDecimal类型序列化为非科学计数法
        JSONWriter.Feature.PrettyFormat, // 格式化输出
        JSONWriter.Feature.WriteNullStringAsEmpty); // String类型值为空序列化为""
JSON.config(JSONReader.Feature.AllowUnQuotedFieldNames); // 字段名称支持没有双引号的反序列化
// 当序列化的值为字符串时直接输出字符串,而不是再加一层引号或双引号,如`JSON.toJSONString("test")`直接输出"test",而不是"\"test\""
JSON.register(String.class, new ObjectWriterPrimitiveImpl<String>(){
    @Override
    public void write(JSONWriter jsonWriter, Object object, Object fieldName, Type fieldType, long features) {
        jsonWriter.writeRaw((String) object);
    }
});

假设你是springboot项目,那么可以使用@Configuration@PostConstruct等注解

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONReader;
import com.alibaba.fastjson2.JSONWriter;
import com.alibaba.fastjson2.writer.ObjectWriterPrimitiveImpl;
import org.springframework.context.annotation.Configuration;

import java.lang.reflect.Type;

@Configuration
public class FastJsonConfig {
    static {
        JSON.configWriterDateFormat("yyyy-MM-dd HH:mm:ss");
        JSON.configReaderDateFormat("yyyy-MM-dd HH:mm:ss");
        JSON.config(JSONWriter.Feature.WriteNullNumberAsZero, // Long等Number类型值为空序列化为0
                JSONWriter.Feature.WriteNullBooleanAsFalse, // Boolean类型值为空序列化为false
                JSONWriter.Feature.WriteLongAsString, // Long类型序列化为字符串
                JSONWriter.Feature.WriteNullListAsEmpty, // List类型值为空序列化为[]
                JSONWriter.Feature.WriteBigDecimalAsPlain,  // BigDecimal类型序列化为非科学计数法
                JSONWriter.Feature.PrettyFormat, // 格式化输出
                JSONWriter.Feature.WriteNullStringAsEmpty); // String类型值为空序列化为""
        JSON.config(JSONReader.Feature.AllowUnQuotedFieldNames); // 字段名称支持没有双引号的反序列化
        // 当序列化的值为字符串时直接输出字符串,而不是再加一层引号或双引号,如`JSON.toJSONString("test")`直接输出"test",而不是"\"test\""
        JSON.register(String.class, new ObjectWriterPrimitiveImpl<String>(){
            @Override
            public void write(JSONWriter jsonWriter, Object object, Object fieldName, Type fieldType, long features) {
                jsonWriter.writeRaw((String) object);
            }
        });
    }
}
posted @ 2025-01-04 02:41  明月心~  阅读(1330)  评论(0)    收藏  举报