将SQL Korma结果转换为json

时间:2014-04-05 15:45:01

标签: json clojure korma

我正在使用SQL Korma在数据库上运行一些简单的示例,并尝试使用Cheshire将其转换为JSON。

当我只返回1条记录但是当我有超过1条结果时抛出错误,这很有效。

以下是2个功能:

(defn get-room [id]
    (first (select room
             (where {:id id})
             (limit 1))))

(defn get-rooms []
    (select room))

和数据:

(def x get-rooms)

(def y (get-room 1))

X的类型为testproj.models.db:

(x)
=> [{:created_on "2014-04-05 13:19:47", :id 1, :description "Room 1"} {:created_on "2014-04-05 13:20:17", :id 2, :description "Room 2"} {:created_on "2014-04-05 13:20:20", :id 3, :description "Room 3"}]

因为y是Hashmap:

(pr-str y)
=> "{:created_on \"2014-04-05 13:19:47\", :id 1, :description \"Room 1\"}"

尝试转换为Json:

(cheshire.core/generate-string x)
JsonGenerationException Cannot JSON encode object of class: class testproj.models.db$get_rooms: testproj.models.db$get_rooms@507501ff  cheshire.generate/generate (generate.clj:147)

(cheshire.core/generate-string y)
=> "{\"created_on\":\"2014-04-05 13:19:47\",\"id\":1,\"description\":\"Room 1\"}"

为什么korma会根据记录的数量返回不同的类型(这有助于我更好地理解这一点),其次 - 我应该怎么做呢?

1 个答案:

答案 0 :(得分:2)

您似乎错过了一个函数调用。试试这个:

(cheshire.core/generate-string (x))