91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

尼木县| 六安市| 扶绥县| 内黄县| 卓尼县| 四会市| 岐山县| 大姚县| 绥阳县| 呼和浩特市| 台江县| 左权县| 祁阳县| 康乐县| 湾仔区| 交口县| 枝江市| 东源县| 松潘县| 都江堰市| 丹江口市| 松江区| 鹤壁市| 濮阳县| 灌阳县| 祁东县| 德安县| 樟树市| 平山县| 昆明市| 开平市| 巴彦淖尔市| 甘南县| 会宁县| 福泉市| 宁海县| 剑河县| 龙海市| 彩票| 沁阳市| 平安县|