簡體   English   中英

在clojure中將json對象轉換為字符串

[英]converting json object to string in clojure

我正在嘗試使用 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 編碼類的對象:類 org.postgresql.util.PGobject:[“所有節點中的容器編號必須一致”]

我不知道我們是否可以在這里使用java的任何toString方法在這里enter code here將JSON轉換為普通字符串。 非常感謝任何幫助

由於 :error_json 列的數據類型在 postgres 數據庫中為“json”,因此您必須將其從“PGobject json”類型轉換為“string”。

是的,您可以使用 toString 來更改類型。

下面是代碼片段:

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

作為修改應用程序代碼的替代方法,您可以修改 SQL 查詢,如下所示:

SELECT id, jsonbValue::TEXT
FROM myTable

添加::TEXT會將 jsonb 轉換為文本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM