精华内容
下载资源
问答
  • @JsonFormat注解失效解决方案

    万次阅读 2018-09-16 10:55:45
    本文转载:     原文地址: @JsonFormat使用      

    本文转载:

     

     

    原文地址: @JsonFormat使用

     

     

     

    展开全文
  • import com.fasterxml.jackson.annotation.JsonFormat; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime;
  • @JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone = “GMT+8”) 出现的问题在于我后台VO用了LocalDateTime格式返回,想配置一个全局的时间格式化,这个就不做介绍了,百度一下就有。 这么配置就行了。 ...

    @JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone = “GMT+8”)
    出现的问题在于我后台VO用了LocalDateTime格式返回,想配置一个全局的时间格式化,这个就不做介绍了,百度一下就有。
    在这里插入图片描述
    在这里插入图片描述
    这么配置就行了。
    那么我的问题就出现在为什么配置了没生效。
    问题及解决方案:
    1.首先更新@JsonFormat所依赖的jar包版本,旧版本不支持对LocalDateTime类型的序列化,所以会出现不生效的问题,这个问题比较坑网上能找到的也比较少,所以先更新版本,如果不解决,就不是这个问题
    2.看是否有接口重写了FastJsonHttpMessageConverter产生了冲突,我这里就是因为框架里有人多加了一个
    在这里插入图片描述
    它这里用的就是重写了FastJsonHttpMessageConverter,导致原本的转换形式失效了,所以去掉就好,如果非要用,就换成JacksonHttpMessageConverter
    在这里插入图片描述
    换成这样就行,整体效果不影响

    展开全文
  • ResponseBodyAdvice导致@JsonFormat失效解决失效情况:加密后@JsonFormat注解失效第一次修改:最终修改:同时加上@JsonFormat和@JSONField注解 失效情况:加密后@JsonFormat注解失效 第一次修改: @JsonFormat换成@...

    失效情况:加密后@JsonFormat注解失效

    第一次修改:

    @JsonFormat换成@JSONField注解
    问题解决,但又引出一个新的问题,去掉加密后 @JSONField注解无效

    最终修改:同时加上@JsonFormat和@JSONField注解

    展开全文
  • 百度了不少解决方式,有让用@JsonField,也有让把fastjson去掉的,也有加很多配置的,但是都没用。 本次使用的版本号: 1、springboot2.2.2 ; 2、fastjson 1.1.26 3、<jackson-mapper-asl.version>1.9.10&...

    百度了不少解决方式,有让用@JsonField,也有让把fastjson去掉的,也有加很多配置的,但是都没用。

    本次使用的版本号:

    1、springboot2.2.2 ;

    2、fastjson 1.1.26

    3、<jackson-mapper-asl.version>1.9.10</jackson-mapper-asl.version>
            <jackson-core.version>2.10.3</jackson-core.version>

    第三点以及相关的依赖可能不需要,加上也没关系

    pom文件中的依赖:

    <dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>fastjson</artifactId>
    			<version>${fastjson.version}</version>
    		</dependency>
    <dependency>
    			<groupId>org.codehaus.jackson</groupId>
    			<artifactId>jackson-mapper-asl</artifactId>
    			<version>${jackson-mapper-asl.version}</version>
    		</dependency> 
    		<dependency>
    			<groupId>com.fasterxml.jackson.core</groupId>
    			<artifactId>jackson-core</artifactId>
    			<version>${jackson-core.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>com.fasterxml.jackson.core</groupId>
    			<artifactId>jackson-databind</artifactId>
    			<version>${jackson-core.version}</version>
    		</dependency>
    		<dependency>
    			<groupId>com.fasterxml.jackson.core</groupId>
    			<artifactId>jackson-annotations</artifactId>
    			<version>${jackson-core.version}</version>
    		</dependency>

    解决方式:

    第一步新建一个转换类 用于自定义Jackson反序列化日期类型时应用的类型转换器,一般用于@RequestBody接受参数时使用

    import com.fasterxml.jackson.core.JsonParser;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.DeserializationContext;
    import com.fasterxml.jackson.databind.JsonDeserializer;
    import org.apache.commons.lang3.StringUtils;
    import org.apache.commons.lang3.time.DateUtils;
    
    import java.io.IOException;
    import java.text.ParseException;
    import java.util.Date;
    
    /**
     * 自定义Jackson反序列化日期类型时应用的类型转换器,一般用于@RequestBody接受参数时使用
    
     *  次类是借用网上别的人的,增加了一个日期格式化的类型
     */
    public class DateJacksonConverter extends JsonDeserializer<Date> {
        //此处尤为重要,请查找自己控制台报错的日期格式化类型是啥样的
        //我的是2020-04-29T16:23:44.999Z 所以我在下面的数组中添加了 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'" 格式;如果下面数组中没有你要的格式化类型,其他的可自行根据自己的情况去添加即可
        private static String[] pattern =
                new String[]{"yyyy-MM-dd", "yyyy-MM-dd HH:mm", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm:ss.S",
                        "yyyy.MM.dd", "yyyy.MM.dd HH:mm", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm:ss.S",
                        "yyyy/MM/dd", "yyyy/MM/dd HH:mm", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm:ss.S", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"};
    
        @Override
        public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
    
            Date targetDate = null;
            String originDate = p.getText();
            if (StringUtils.isNotEmpty(originDate)) {
                try {
                    long longDate = Long.valueOf(originDate.trim());
                    targetDate = new Date(longDate);
                } catch (NumberFormatException e) {
                    try {
                        targetDate = DateUtils.parseDate(originDate, DateJacksonConverter.pattern);
                    } catch (ParseException pe) {
                        throw new IOException(String.format(
                                "'%s' can not convert to type 'java.util.Date',just support timestamp(type of long) and following date format(%s)",
                                originDate,
                                StringUtils.join(pattern, ",")));
                    }
                }
            }
    
    
            return targetDate;
        }
    
        @Override
        public Class<?> handledType() {
            return Date.class;
        }
    }

    创建好上边的类之后,如果不想继续,则可以在实体对象属性上加注解就完全可以了。

    导入的包路径为:import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 

    @JsonDeserialize(using=DateJacksonConverter.class)
    private Date startDate;

    如果不想去让实体类加这个注解,可以在写一个公共配置,如下: 

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean;
    import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
    
    import com.fasterxml.jackson.databind.ObjectMapper;
    import com.fx.base.serializer.DateJacksonConverter;
    
    @Configuration
    public class ConverterConfig {
        @Bean
        public DateJacksonConverter dateJacksonConverter() {
            return new DateJacksonConverter();
        }
    
        @Bean
        public Jackson2ObjectMapperFactoryBean jackson2ObjectMapperFactoryBean(
                @Autowired
                        DateJacksonConverter dateJacksonConverter) {
            Jackson2ObjectMapperFactoryBean jackson2ObjectMapperFactoryBean = new Jackson2ObjectMapperFactoryBean();
    
            jackson2ObjectMapperFactoryBean.setDeserializers(dateJacksonConverter);
            return jackson2ObjectMapperFactoryBean;
        }
    
        @Bean
        public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(
                @Autowired
                        ObjectMapper objectMapper) {
            MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter =
                    new MappingJackson2HttpMessageConverter();
            mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
            return mappingJackson2HttpMessageConverter;
        }
    }
    

    此时就不必再每个实体类属性上加注解了。

    ………………………………………………………………………………………………………………

    展开全文
  • 注:以下为搭建项目并查找@JsonFormat注解不生效的几处关键位置 一、pom.xml引用Jackson依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-...
  • 主要介绍了springboot json时间格式化处理的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 我们是在实体中使用@JsonFormat 标签,发现使用后不能正常封装数据,返回数据为时间戳的格式。 这样方式无法正常使用封装数据 @JsonFormat(pattern = “yyyy-MM-dd”) private Date acceptTime; ///////////////////...
  • Long类型在java种最大长度是19位,前端获取到该数据时...1、给实体对象的Long类型的属性加注解@JsonFormat(shape = JsonFormat.Shape.STRING) import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Da
  • @JsonFormat失效解决

    万次阅读 多人点赞 2020-05-22 22:59:03
    @JsonFormat失效,换成@JSONField就好了 问题经过和原理 @JsonFormat作为Date类型的属性值,返回前端格式化处理,很方便。 比如: @JsonFormat(pattern = "yyyy/MM/dd HH:mm:ss") private Date updateTime; 返回...
  • @DateTimeFormat属于springMVC框架,是时间格式化注解,用来字符串时间格式化的转换,当前端传递表单时使用。 常用属性: – pattern 属性:类型为字符串。 属性值例:”yyyy-MM-dd hh:mm:ss” ...@JsonF
  • @JsonFormat 处理 LocalDateTime 失效

    千次阅读 2020-06-05 09:50:17
    Failed to convert property value of ...Api 请求参数中,通过需要用时间LocalDateTime,希望通过@JsonFormat() 处理时间格式: @GetMapping("/user") public UserDTO getUser(UserDTO name) { xxx } @Data public
  • @JsonFormat注解是一个时间格式化注解,可以将date日期格式转化为json的时候,输出的指定格式例如:yyyy-MM-dd HH:mm:ss 2.@JsonFormat 使用方法 maven引入: <dependency> <groupId>...
  • 实体类属性上的@JsonFormat注解格式化时间不起作用 解决办法: 加上时区:timezone = “GMT+8” @JsonFormat(pattern = “yyyy-MM-dd”, timezone = “GMT+8”)
  • @JsonFormat失效

    千次阅读 2019-10-14 15:44:23
    JsonFormat失效? 测试方法如下: /** 测试对象 */ @Data public class ApiTestDto implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") private Date startDate; } /** ...
  • 我们可以使用SpringBoot依赖中的@JsonFormat注解,将前端通过json传上来的时间,通过@RequestBody自动绑定到Bean里的LocalDateTime成员上。具体的绑定注解使用方法如下所示。 @JsonFormat(pattern = "yyyy-MM-dd ...
  • @JsonFormat"失效"以及解决方案

    万次阅读 2017-01-16 13:58:28
    在使用springboot的框架下,可以利用@jsonFormat作为注解来消除时差.但是在使用的过程中发现有一种情况下这个注解失效. 在数据库第一张表table1中我只需要存入小时和秒,而且作比较的时候也是只用来比较小时和秒,...
  • 后来发现就是addScalar的原因,我给返回的时间类型都用了addScalar("date", StandardBasicTypes.DATE),结果@Jsonformat失效了,当我换成.addScalar("date", StandardBasicTypes.TIMESTAMP)后就可以了。...
  • 项目中原本使用@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")这个注解,效果是可以的 ,如:2019-07-02; 后面项目中加入fastjson后,我继续使用这个注解,导致的效果如:2019-07-02 00:00:00,返回...
  • 实体类中有几个时间类型的属性有@JsonFormat注解。点击提交后报400错误。 400错误,最大几率是出现了数据类型不一致的问题,简单来说是Controller层不用正确读取你发送请求附带的参数。 针对这个400错误,我首先...
  • 本文目录 一、背景描述 二、错误原因 三、解决方案 一、背景描述 项目技术栈:Spring ... 拓展:@JsonFormat与@DateTimeFormat注解的使用:https://blog.csdn.net/weixin_44299027/article/details/102931545  完结!
  • 有时候我们使用@JsonFormat注解时会忽略设置时区,这样有可能就会导致我们转换的时间与我们从数据库查出的真确时间有差别 这样有可能会导致时间出现误差 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 所以应该...
  • 注解@JsonFormat主要是后台到前台的时间格式的转换 注解@DataFormAT主要是前后到后台的时间格式的转换 @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8") ...
  • 又学会一个新技能
  • 问题描述: 前台有个时间类型的表单项,后台的controller用的是Date()类型的参数接收, 发现运行报400错误–也就是Date类型的参数没映射上,为null了… ...json的@JsonFormat可解决出参的时间映射问题… ...
  • 在和前端小伙伴对接接口的时候,前端小伙伴问我能不能后台处理一下createTime的返回格式。如图: image.png ...我想,这很简单啊。...@JsonFormat注解是一个时间格式化注解,比如我们存储在mysql中的数据是d...
  •  写在前面 最近,有个小伙伴问我:我在SpringBoot项目中,使用@JsonFormat注解标注LocalDateTime类型的字段时,LocalDateTime反序列化失败,这个我该怎么处理呢?别急,我们一起来解决这个问题。 小伙伴的疑问 解答...
  • 使用@jsonFormat时间转换失效解决

    千次阅读 2019-09-16 10:16:05
    哦,发现项目使用了 fastJson 作为 JSON MessageConverter 是和之前项目配置上的一个最大区别,fastJosn不支持jackson的@JsonFormat方法。好吧,注释掉,springboot2.x之后默认使用jackson作为 JSON ...
  • @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss", timezone = "GMT+8") public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,247
精华内容 1,698
关键字:

jsonformat注解失效