概要
下記のようなJSON形式の文字列を配列型に変換する方法を調べたのでメモしておく。
JSON型へキャストする
Prestoで、各値をJSON型に変換する。
SELECT
CAST(NULL AS JSON), -- NULL
CAST(1 AS JSON), -- JSON '1'
CAST('abc' AS JSON),-- JSON '"abc"'
CAST(true AS JSON), -- JSON 'true'
CAST(1.234 AS JSON),-- JSON '1.234'
CAST(ARRAY[1,2,3] AS JSON), -- JSON '[1,2,3]'
CAST(ARRAY[1,NULL,3] AS JSON), -- JSON '[1,null,3]'
CAST(ARRAY[ARRAY[1,2], ARRAY[3,4]] AS JSON), -- JSON '[[1,2],[3,4]]'
CAST(MAP(ARRAY['k1','k2'], ARRAY[1,2]) AS JSON), -- JSON '{"k1":1,"k2":2}'
json_parse('["a","b"]') -- JSON ["a","b"]
;
文字列型 > JSON型 > ARRAYに変換する
Prestoに「json_parse」という関数があったので文字列をJSON型にするのに利用する。
SELECT
CAST(json_parse('["a","b"]') AS ARRAY(VARCHAR)) -- JSON ["a","b"]
;