Spring Boot 集成 fastjson

Spring Boot 集成 fastjson

环境信息

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.6.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <java.version>1.8</java.version>
</properties>

配置

添加依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.58</version>
</dependency>
添加配置类
  • Bean注入
@Configuration
public class FastJsonWebConfig {

    @Bean
    public HttpMessageConverters fastJsonConfigure() {
        // 1.需要先定义一个convert 转换消息的对象
        FastJsonHttpMessageConverter fasHttpMessageConverter = new FastJsonHttpMessageConverter();
        // 2.添加fastJson的配置信息,比如,是否需要格式化返回的json数据
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
        //3. 在converter中添加配置信息
        fasHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
        HttpMessageConverter<?> converter = fasHttpMessageConverter;
        return new HttpMessageConverters(converter);
    }
}
测试
// UserController.java

@RestController
@RequestMapping("/api")
public class UserController {

    @PostMapping("/login1")
    @ResponseBody
    public User getUser1() {
        User user = new User("a1", "123qwe");
        return user;
    }

    @PostMapping("/login2")
    @ResponseBody
    public User[] getUser2(@RequestBody User[] user) {
        return user;
    }
}

http://127.0.0.1:80/api/login1 测试通过
在这里插入图片描述
http://127.0.0.1:80/api/login2 测试通过
在这里插入图片描述

相关知识

@JSONField 注解
  • 指定字段名称

    @JSONField(name = "NAME")
    private String name;
    
  • 格式化日期

    @JSONField(format="yyyy-MM-dd")  
    private Date date; 
    
  • 指定字段顺序

    @JSONField(ordinal = 3)  
    private int f0;  
    
    @JSONField(ordinal = 2)  
    private int f1;  
    
    @JSONField(ordinal = 1)  
    private int f2; 
    
  • 指定字段不序列化

    @JSONField(serialize = false)
    private String name;
    
  • 指定字段不反序列化

    @JSONField(deserialize = false)
    private String name;
    
  • @JSONField放在字段上和get set方法上的区别

    • 放在字段上, 同时指定序列化和反序列化操作
    • 放在get上, 指定序列化时的操作
    • 放在set上, 指定反序列化时的操作
SerializerFeature属性
名称含义备注
QuoteFieldNames输出key时是否使用双引号,默认为true
UseSingleQuotes使用单引号而不是双引号,默认为false
WriteMapNullValue是否输出值为null的字段,默认为false
WriteEnumUsingToStringEnum输出name()或者original,默认为false
UseISO8601DateFormatDate使用ISO8601格式输出,默认为false
WriteNullListAsEmptyList字段如果为null,输出为[],而非null
WriteNullStringAsEmpty字符类型字段如果为null,输出为”“,而非null
WriteNullNumberAsZero数值字段如果为null,输出为0,而非null
WriteNullBooleanAsFalseBoolean字段如果为null,输出为false,而非null
SkipTransientField如果是true,类中的Get方法对应的Field是transient,序列化时将会被忽略。默认为true
SortField按字段名称排序后输出。默认为false
WriteTabAsSpecial把\t做转义输出,默认为false不推荐
PrettyFormat结果是否格式化,默认为false
WriteClassName序列化时写入类型信息,默认为false。反序列化是需用到
DisableCircularReferenceDetect消除对同一对象循环引用的问题,默认为false
WriteSlashAsSpecial对斜杠’/’进行转义
BrowserCompatible将中文都会序列化为\uXXXX格式,字节数会多一些,但是能兼容IE 6,默认为false
WriteDateUseDateFormat全局修改日期格式,默认为false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj, SerializerFeature.WriteDateUseDateFormat);
DisableCheckSpecialChar一个对象的字符串属性中如果有特殊字符如双引号,将会在转成json时带有反斜杠转移符。如果不需要转义,可以使用这个属性。默认为false
NotWriteRootClassName
BeanToArray将对象转为array输出
WriteNonStringKeyAsString
NotWriteDefaultValue
BrowserSecure
IgnoreNonFieldGetter
WriteEnumUsingName
                                                    |        |

| WriteEnumUsingName | | |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值