最近使用到了json的陣列,用來儲存多個檔案的值,發現在連表查詢的時候返回結果變成了字串。
"打豆豆.io",
我們發現attaches被轉換成了字串,但是我attaches欄位明明定義的是json型別的,但是返回 結果變成了字串。
我們來看下資料庫的字段
add column "attaches
" text not null default '
'::jsonb;
可以看到用的是json型別還有就是在查詢的時候使用了to_json
這是to_json的函式的文件描述
把值返回為json或者jsonb。陣列和組合被(遞迴地)轉換成陣列和物件;否則, 如果有從該型別到json的投影,將使用該投影函式來執行轉換; 否則將產生乙個標量值。對任何乙個數值、布林量或空值的標量型別, 將使用其文字表達,以這樣一種方式使其成為有效的json或者jsonb值。~~~~
所以這是正常的情況,但是我們需要的是以陣列的形式輸出。這是發現 attaches欄位用的是text欄位,也就是文字字段,他可能就是導致問題出現的原因, 於是更改了字段的型別為jsonb,發現解決了,attaches的輸出已經正常了。
當然這種操作還有乙個改進的辦法,就是使用陣列,而不是json陣列,這樣也不會出現這些問題了。
add column "attachess
" text default '
{}'::text;
拆分json格式陣列
把轉換成 declare my cursor cursor 定義游標 for select key from airportdemo 把資料集匯入游標 open my cursor 開啟游標 fetch next from my cursor into key 把游標中第一條放到變數key中 whi...
iOS 中json中字典 轉json格式字串
這是我從plist檔案中找到的乙個字典,把裡面的字典轉成了json資料,多注意字串的拼接,雖然不難,容易犯錯誤。nsarray flags nsmutablestring jsonstring nsmutablestring stringwithformat mutstr jsonstring in...
mysql操作 json 陣列 的增刪該查
前言,型別必須是json,雖然text也可以,但是很多操作沒法使用,比如查詢,當然了,這種型別還可以儲存陣列 類似 varchar,設定 json 主要將字段的 type 是 json,不能設定長度,可以是 null 但不能有預設值。就是插入 json 格式的字串,可以是物件的形式,也可以是陣列的形...