首页 > 编程语言 >[JAVA]Springboot添加fastjson用于前台数据校验

[JAVA]Springboot添加fastjson用于前台数据校验

时间:2022-11-01 23:57:27浏览次数:56  
标签:fastjson FastJsonHttpMessageConverter JAVA Springboot fastConverter springframew

方式一,添加HttpMessageConverters实例

import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.autoconfigure.web.HttpMessageConverters;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;

/**
 * json填充到java对象
 */
@Configuration
public class MyConverter {
    @Bean
    public HttpMessageConverters fastJsonHttpMessageConverters() {
        // 1、需要先定义一个 convert 转换消息的对象;
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();

        //2、添加fastJson 的配置信息,比如:是否要格式化返回的json数据;
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        // fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);

        //3、在convert中添加配置信息.
        fastConverter.setFastJsonConfig(fastJsonConfig);

        HttpMessageConverter<?> converter = fastConverter;
        return new HttpMessageConverters(converter);
    }
}
View Code 

方式二,继承WebMvcConfigurationSupport

import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import java.nio.charset.StandardCharsets;
import java.util.Collections;
import java.util.List;

@Configuration
public class BackendWebMvcConfig extends WebMvcConfigurationSupport {
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        //定义一个convert转换消息的对象
        FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter();
        //添加fastjson的配置信息,比如是否要格式化返回的json数据;
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(
            //是否输出值为null的字段,默认为false
            SerializerFeature.WriteMapNullValue,
            //将Collection类型字段的字段空值输出为[]
            SerializerFeature.WriteNullListAsEmpty,
            //将字符串类型字段的空值输出为空字符串
            SerializerFeature.WriteNullStringAsEmpty);
        //在convert中添加配置信息
        fastConverter.setFastJsonConfig(fastJsonConfig);
        //设置支持的媒体类型
        fastConverter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
        //设置默认字符集
        fastConverter.setDefaultCharset(StandardCharsets.UTF_8);
        //将convert添加到converters
        converters.add(0, fastConverter);
        //解决返回字符串带双引号问题
        StringHttpMessageConverter stringHttpMessageConverter = new StringHttpMessageConverter();
        stringHttpMessageConverter.setSupportedMediaTypes(Collections.singletonList(MediaType.TEXT_PLAIN));
        stringHttpMessageConverter.setDefaultCharset(StandardCharsets.UTF_8);
        converters.add(0, stringHttpMessageConverter);
        super.addDefaultHttpMessageConverters(converters);
    }
}
View Code

 

问题记录:

   1、对象校验报错: 

/**
* 用户id
*/
@JSONField(name = "user_id")
@NotEmpty()
private Long userId;

报:No validator could be found for constraint 'javax.validation.constraints.NotEmpty' validating type 'java.lang.Long'. Check configuration for 'userId'

NotEmpty只能用于string判空,Long类型不支持,改成@NotNull

说明:
1、restful接口中使用注解@Validate和Valid都可用,Validated支持分组
@PostMapping(value = "edit")
@ResponseBody
public HttpResult edit(@RequestBody @Validate User user) {}

 

标签:fastjson,FastJsonHttpMessageConverter,JAVA,Springboot,fastConverter,springframew
From: https://www.cnblogs.com/leonlipfsj/p/16849606.html

相关文章

  • android miui ActivityInjector: get life cycle exception java.lang.ClassCastExcep
    切换主题样式时,抛出的异常(虽然抛出了异常,但功能未受影响,也未崩溃)。原异常代码:E/ActivityInjector:getlifecycleexceptionjava.lang.ClassCastException:androi......
  • java遇到exception继续执行
    @Test  voidcontextLoads02(){    Map<String,Object>hashMap=newHashMap<>();    hashMap.put("a","1");    hashMap.put("b",null);......
  • Java的基本类型
    目录整型变量int长整型long短整型short比特型byte浮点数float和double关于3*0.1==0.3字符型char布尔类型boolea......
  • java8函数式接口 生产者和消费者
    /***函数式接口*@paramsupplier要去做什么事情get获取到做的事情的返回值*/publicstaticvoidsupplierTest(Supplier<Integer>supplie......
  • Java学习——11.01
     隔了两天啊,本来想一天一写的,但昨天的课太多再加上Java环境的搭建太麻烦了,所以就隔了一天。不过昨天也不是什么都没做,已经熟记前面的的DOS命令,在控制台创建文件自如。真......
  • Java运算符
    1.算数运算符a.加法减法乘法除法求余自增减运算符自增自减关系运算符不等于等于大于大于等于小于小于等于逻辑运算符逻辑与逻辑或逻辑非位运算符......
  • 快速了解Java设计模式
    背景Java二十三种设计模式的简单介绍,目的是能看懂别人写的设计模式代码,且能应用常用的设计模式。设计模式分类创建型模式工厂方法(Factory)工厂模式分为三种:简单工厂(不......
  • javascript异步编程之generator(生成器函数)与asnyc/await语法糖
    Generator异步方案相比于传统回调函数的方式处理异步调用,​​Promise​​最大的优势就是可以链式调用解决回调嵌套的问题。但是这样写依然会有大量的回调函数,虽然他们之间......
  • java接口
    /***接口是一种特殊的抽象类,该类型只能存在常量和抽象方法,而不存在变量和具体方法*jdk1.8之前只能声明抽象方法,1.8之后可以声明具体方法*定义接口时,需要使用inter......
  • javascript异步编程之generator(生成器函数)与asnyc/await语法糖
    Generator异步方案相比于传统回调函数的方式处理异步调用,Promise最大的优势就是可以链式调用解决回调嵌套的问题。但是这样写依然会有大量的回调函数,虽然他们之间没有嵌......