中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

fastjson序列化時間自定義格式的方法是什么

發布時間:2023-04-27 16:09:45 來源:億速云 閱讀:156 作者:iii 欄目:開發技術

今天小編給大家分享一下fastjson序列化時間自定義格式的方法是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

首先建一個項目添加依賴

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.80</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>
    </dependencies>

寫個帶有時間屬性的類,就叫 Task 吧,

@Data
@Accessors(chain = true)
public class Task {
    private String name;
    private LocalDateTime startTime;
    private LocalDateTime endTime;
}

看一下 fastjson 序列化方法,發現可以傳個配置對象,看看這個能不能解決問題

/**
 * @param object 要序列化的對象
 * @param config 序列化配置
 * @param features
 */
public static String toJSONString(Object object, SerializeConfig config, SerializerFeature... features)

這個配置類里面有一個 put 方法,可以設置不同的類型使用不同的序列化器,所以我們可以通過給日期類型設置自定義的序列化器來實現自定義日期格式

/**
 * @param type 類型
 * @param value 序列化器
 */
public boolean put(Type type, ObjectSerializer value)

自定義序列化器并重寫序列化方法,這里只針對 LocalDateTime 類型進行了自定義,其他類型如出一轍。

public class JsonSerializer implements ObjectSerializer {
    @Override
    public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
        SerializeWriter out = serializer.getWriter();
        if (object == null) {
            serializer.getWriter().writeNull();
            return;
        }
        // 對LocalDateTime類型進行格式轉化
        out.write("\"" + ((LocalDateTime) object).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) + "\"");
    }
}

配置類中注入 Spriing 容器

@Configuration
public class JsonConfig {
    @Bean
    public SerializeConfig serializeConfig() {
        SerializeConfig config = new SerializeConfig();
        // 對LocalDateTime類型指定自定義的序列化器
        config.put(LocalDateTime.class, objectSerializer());
        return config;
    }
    @Bean
    public ObjectSerializer objectSerializer() {
        return new JsonSerializer();
    }
}

寫個接口做下測試

@RestController
@RequestMapping
public class FastJsonDemo {
    @Autowired
    private SerializeConfig serializeConfig;
    @RequestMapping("/test")
    public String jsonTest() {
        LocalDateTime now = LocalDateTime.now();
        Task task = new Task().setName("拯救地球任務").setStartTime(now).setEndTime(now.plusDays(10));
        return JSON.toJSONString(task, serializeConfig);
    }
}

瀏覽器調用接口,看下結果

fastjson序列化時間自定義格式的方法是什么

日期里面的 T 沒有了,變成了自定義的格式,搞定!

以上就是“fastjson序列化時間自定義格式的方法是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

文水县| 永泰县| 怀远县| 扶沟县| 郴州市| 彩票| 鲁山县| 晋中市| 丰台区| 柳州市| 手机| 巩留县| 嘉善县| 揭西县| 买车| 旅游| 辽宁省| 双城市| 大悟县| 独山县| 镇安县| 海晏县| 武定县| 安多县| 武穴市| 东海县| 疏勒县| 浪卡子县| 囊谦县| 新化县| 长泰县| 股票| 当阳市| 柳河县| 富源县| 巨野县| 乡城县| 上饶市| 长武县| 玉田县| 利津县|