在clojure中将json对象转换为字符串

时间:2015-01-04 22:31:13

标签: java json clojure sqlkorma

我正在尝试使用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]) ) )转换为正常字符串。 任何帮助都非常感谢

1 个答案:

答案 0 :(得分:0)

由于:error_json列的数据类型是postgres数据库中的“json”,因此您必须将其从“PGobject json”转换为“string”。

是的,你可以使用toString来改变类型。

下面的

是代码段:

(map (fn [value] (update-in value [:error_json] #(.toString %))) (get-all-bre-errors))