我正在尝试使用clojure,sql korma和angularJS将json对象从表格显示到UI屏幕。我有一个表的列数据类型为json。数据库是postgres。当我尝试运行代码时,我收到一个错误。 我查询数据库的代码如下。
(ns error_api_transactions.models.bre_dve_errors_api_transactions
(:require [debug.logger :as logger])
(:use [korma.core]
[core.config.db]
[utils.gen_password]
[core.file-store]
[utils.uuid :as utils-uuid]))
(defentity bre_errors
(pk :id)
(table :bre_errors)
(database master-db))
(defentity dve_errors
(pk :id)
(table :dve_errors)
(database master-db))
(defentity vendor_detail
(pk :id)
(table :vendor)
(database master-db))
(defn get-all-bre-errors
^{:Comments ""}
[]
(select bre_errors
(fields [:vendor_id :vendor_id]
[:error_json]
[:error_xml :error_xml]
[:input :input]
[:created_on :created_on]
[:updated_on :updated_on]
[:deleted_on :deleted_on]
[:po_number :po_number]
[:purchase_order_id :purchase_order_i])
)
)
错误是: com.fasterxml.jackson.core.JsonGenerationException:JSON不能编码类的对象:class org.postgresql.util.PGobject:["所有节点中的容器编号必须一致"]
我不知道我们是否可以使用java的任何toString方法将(ns error_api_transactions.models.bre_dve_errors_api_transactions
(:require [debug.logger :as logger])
(:use [korma.core]
[core.config.db]
[utils.gen_password]
[core.file-store]
[utils.uuid :as utils-uuid]))
(defentity bre_errors
(pk :id)
(table :bre_errors)
(database master-db))
(defentity dve_errors
(pk :id)
(table :dve_errors)
(database master-db))
(defentity vendor_detail
(pk :id)
(table :vendor)
(database master-db))
(defn get-all-bre-errors
^{:Comments ""}
[]
(select bre_errors
(fields [:vendor_id :vendor_id]
[:error_json]
[:error_xml :error_xml]
[:input :input]
[:created_on :created_on]
[:updated_on :updated_on]
[:deleted_on :deleted_on]
[:po_number :po_number]
[:purchase_order_id :purchase_order_i])
)
)
转换为正常字符串。
任何帮助都非常感谢
答案 0 :(得分:0)
由于:error_json列的数据类型是postgres数据库中的“json”,因此您必须将其从“PGobject json”转换为“string”。
是的,你可以使用toString来改变类型。
下面的是代码段:
(map (fn [value] (update-in value [:error_json] #(.toString %))) (get-all-bre-errors))