2015-01-04 53 views
0

我想用clojure,sql korma和angularJS從表格向UI屏幕顯示json對象。我有一個列的數據類型爲json的表。數據庫是postgres.When我試圖運行代碼時,我得到一個錯誤。 我的代碼來查詢數據庫是如下。將json對象轉換爲clojure中的字符串


          
  
(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對象:類org.postgresql.util.PGobject:「在所有節點箱號必須一致」]

我不知道我們是否可以使用java的任何toString方法到這裏去enter code here把JSON轉換成普通字符串。 高度讚賞任何幫助

回答

0

由於error_json列的數據類型是postgres數據庫中的「json」,因此您必須將它從「PGobject json」類型轉換爲「string」。

是的,你可以使用toString來改變類型。

下面

是代碼片段:

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