您好,登錄后才能下訂單哦!
今天小編給大家分享一下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")) + "\""); } }
@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); } }
瀏覽器調用接口,看下結果
日期里面的 T
沒有了,變成了自定義的格式,搞定!
以上就是“fastjson序列化時間自定義格式的方法是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。