我通過spit
將嵌套的數據映射保存到磁盤。我希望我的地圖中的一些地圖可以排序,並且當我將地圖重新放入我的程序時保持排序。排序後的地圖沒有唯一的文字表示形式,因此當我將spit
地圖映射到磁盤上時,排序後的地圖和未排序的地圖表示相同,並且數據會使每個地圖成爲通常的未排序類型。這裏有一個例子玩具能說明問題:將已排序的地圖保存到Clojure的文件中
(def sorted-thing (sorted-map :c 3 :e 5 :a 1))
;= #'user/sorted-thing
(spit "disk" sorted-thing)
;= nil
(def read-thing (read-string (slurp "disk")))
;= #'user/read-thing
(assoc sorted-thing :b 2)
;= {:a 1, :b 2, :c 3, :e 5}
(assoc read-thing :b 2)
;= {:b 2, :a 1, :c 3, :e 5}
是否有某種方式來讀取作爲排序的地圖擺在首位,而不是看完後把它們轉換成排序的地圖?或者這是一個跡象表明我應該使用某種真實的數據庫?
查看帶有標籤元素的[EDN](https://github.com/edn-format/edn)。 –
如果你把它寫成JSON,並將其讀回到'sorted-map'中,是否滿足你的要求? – Kevin
@Kevin如何告訴'clojure.data.json'如何讀取as中的對象?或者你的意思是不同的圖書館? – num1