Json 如何解码并格式化标记的LocalDateTime值

Json 如何解码并格式化标记的LocalDateTime值,json,clojure,clojurescript,reagent,transit,Json,Clojure,Clojurescript,Reagent,Transit,这是我的Clojurescript函数 (defn message-list [messages] (println messages) ;; stmt#1 [:ul.messages (for [{:keys [timestamp message name]} @messages] ^{:key timestamp} [:li [:time (.toLocaleString timestamp)] ;; stmt#2 [:p messa

这是我的Clojurescript函数

(defn message-list [messages]
  (println messages) ;; stmt#1
  [:ul.messages
   (for [{:keys [timestamp message name]} @messages]
     ^{:key timestamp}
     [:li
      [:time (.toLocaleString timestamp)] ;; stmt#2
      [:p message]
      [:p " - " name]])])
stmt#1
正在打印

#<Atom: [{:id 1, :name Adeel Ansari, :message Hello, from the other side., 
          :timestamp #object[Transit$TaggedValue [TaggedValue: LocalDateTime, 2020-01-13T18:19:50.552]]}]>
[TaggedValue: LocalDateTime, 2020-01-13T18:19:50.552]

现在,我想把它打印成,比如,
13/01/2020 18:19
;我该怎么做呢?
我不知道如何解码标记的值。

您可以使用
-rep
TaggedValue
获取值,然后,您可以使用一些库解析该
字符串

例如,您可以使用解析日期,如下所示:

(让[tv(t/标记值“LocalDateTime”2019-01-01T11:22:33.123”)]
(cljc.java-time.local-date-time/parse(.-rep tv))=>#对象[LocalDateTime 2019-01-01T11:22:33.123]
或者你可以使用;然后你的代码看起来像

(ns xx.yy.zz)
)要求。。
[勾选美国地区]
[勾选alpha.api:as t]
..
))
...
(defn消息列表[消息]
...
[:李
[:time(t/格式(t/格式化程序“dd/MM/yyyy HH:MM”)(t/解析(.-rep timestamp))]
...]
...)
...

理想情况下,您可以直接向transit提供一个处理函数,以便它可以在读取时转换值。首先,必须在服务器上执行同样的操作才能创建TaggedValue

在构建您可以提供的

:handlers {"LocalDateTime" (fn [string-val] (parse-the-timestamp string-val))}

格式化应该延迟到需要时,但最好不要让TaggedValue脱离read函数,因为它将代码与transit实现耦合起来。

谢谢,Thomas;这听起来是个很好的建议。实际上,我在调查handler,但不知道怎么做。你的片段给了我一个提示。