1 SELECT 2 code, 3 name, 4 ai.ACode, 5 ai.AName, 6 bi.BCode, 7 bi.BName 8 FROM (SELECT 9 get_json_object(t.value, '$.base.code') AS code, 10 get_json_object(t.value, '$.base.name') AS name, 11 get_json_object(t.value, '$.list') AS list 12 FROM 13 ( 14 SELECT 15 '{"base":{"code":"xm","name":"project"},"list":[{"ACode":"cp1","AName":"Product1","BList":[{"BCode":"gn1","BName":"Feature1"},{"BCode":"gn2","BName":"Feature2"}]},{"ACode":"cp2","AName":"Product2","BList":[{"BCode":"gn1","BName":"Feature1"}]}]}' AS value 16 ) t 17 ) t1 18 lateral VIEW explode(split(regexp_replace(regexp_extract(list, '^\\[(.+)\\]$', 1), '\\}\\]\\}\\,\\{', '\\}\\]\\}\\|\\|\\{'), '\\|\\|')) list AS a lateral VIEW json_tuple(a, 'ACode', 'AName', 'BList') ai AS ACode, 19 AName, 20 BList lateral VIEW explode(split(regexp_replace(regexp_extract(BList, '^\\[(.+)\\]$', 1), '\\}\\,\\{', '\\}\\|\\|\\{'), '\\|\\|')) BList AS b lateral VIEW json_tuple(b, 'BCode', 'BName') bi AS BCode, 21 BName ;