Postgresql

pgadmin:無法插入 jsonb帶字元串的值

  • July 27, 2021

我有jsonb[]列,它允許我插入一些嵌套數組,但只能使用像{{1,2,3}, {4,5,6}, {7,8,9}}. 我不是在談論插入一些嵌套對象,例如{{"one": "two"}, {"three": "four"}}.

如何甚至插入嵌套的字元串值,例如:

{ {"one", "two", "three"},
 {"four", "five", "six"},
 {"seven", "eight", "nine"} }

在此處輸入圖像描述

錯誤:無效語法…,標記“一”無效

答案是:在pgadmin中,您必須在鍵/值定義之前和之後轉義每個引號。多麼複雜的解決方案。

{
   "{\"one\": \"two\"}",
   "{\"three\": \"foure\"}",
   "{\"fivep\": \"six\"}"
}

看來你的 json 數據格式無效,你可以先用一些 IDE/線上工具比如jsonlint.com來檢查一下:

錯誤:第 1 行解析錯誤:{ { “one”, “two”, –^ Expecting ‘STRING’, ‘}’, got ‘{’

甚至 {{1,2,3}, {4,5,6}, {7,8,9}} 的 json 格式也無效。

它應該使用以下數據執行:

{   "a": [1, 2, 3],     "b": [4, 5, 6],     "c": [7, 8, 9] }

或者 :

[1, 2, 3, 4, 5, 6, 7, 8, 9]

還有這個 :

{   "a": ["one", "two", "three"],   "b": ["four", "five", "six"],   "c": ["seven", "eight", "nine"] }

或者

["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]

引用自:https://dba.stackexchange.com/questions/244771