JSON.toJSONString(xxx) @JsonFormat失效

时间:2025-04-01 19:09:05

@TOC

JSON.toJSONString(xxx) @JsonFormat失效

问题复现:
引用的依赖

 <properties>
   <fastjson.version>1.2.44</fastjson.version>
</properties>

<dependencies>   
   <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>${fastjson.version}</version>
   </dependency>
</dependencies>

实体类代码:

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import java.time.LocalDateTime;


@Data
@Accessors(chain = true)
public class SyncDataReq {

    /**
     * 数据时间-开始
     */
    // @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime occurrenceTimeBegin;

    /**
     * 数据时间-开始
     */
    // @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime occurrenceTimeEnd;

}

测试代码

@Test
public void test03() {
    LocalDateTime now = LocalDateTime.now();
    SyncDataReq req = new SyncDataReq();
    req.setOccurrenceTimeBegin(now);// @JsonFormat 序列化失效
    req.setOccurrenceTimeEnd(LocalDateTime.of(2025, 4, 12, 10, 11, 12));//正常格式序列化
    System.out.println("req = " + JSON.toJSONString(req));
}

测试输出:

req = {"occurrenceTimeBegin":1743410373978,"occurrenceTimeEnd":"2025-04-12 10:11:12"}

问题解决:
fastjson升级到2.0.49版本后,问题解决