PostgreSQL json値の型を取得する

PostgreSQL json値の型を取得する

PostgreSQLで、json値の型を取得する手順を記述してます。「json_typeof」を使用することで可能です。「josnb」型には「jsonb_typeof」で可能です。

環境

  • OS CentOS Stream release 9
  • PostgreSQL 15.1
  • pgadmin4 6.16

json値の型を取得

json値の型を取得するには、「json_typeof」を使用します。
※「josnb」型には「jsonb_typeof」を使用します。

json_typeof(jsonデータ);

jsonb_typeof(jsonbデータ);

実際に、実行してみます。

SELECT
  json_typeof('"aaa"'::json) AS "abc",
  json_typeof('123.45'::json) AS "123.45",
  json_typeof('true'::json) AS "true",  
  json_typeof('[1,2,3]'::json) AS "[1,2,3]",
  json_typeof('{"id":1}'::json) AS "{""x"":1}",
  json_typeof('null'::json) AS "null";

実行結果をみると型が取得されていることが確認できます。

型の違う「jsonb」に「json_object_keys」を使用するとエラーとなります。

SELECT
  json_typeof('"aaa"'::jsonb) AS "abc";

ERROR:  関数json_typeof(jsonb)は存在しません
LINE 2:   json_typeof('"aaa"'::jsonb) AS "abc";
          ^
HINT:  指定した名前と引数型に合致する関数がありません。明示的な型変換が必要かもしれません。
SQL 状態: 42883
文字: 10

実行結果

空を指定

引数を空にしても、エラーが発生します。

SELECT
  json_typeof() AS "abc";

ERROR:  関数json_typeof()は存在しません
LINE 2:   json_typeof() AS "abc";
          ^
HINT:  指定した名前と引数型に合致する関数がありません。明示的な型変換が必要かもしれません。
SQL 状態: 42883
文字: 10

実行結果