Hive处理json数组

思路:使用正则替换json数组内部json串之间的逗号。"},{" -----> "}|{",再使用炸裂函数lateral view explod(split(col,"|"))将列转行,最后使用get_json_object()单独处理每个展开行的数据。

SELECT explode(split(
     regexp_replace(
         regexp_replace(
            '[
                {"user_id":"1","name":"小琳","age":16},
                {"user_id":"2","name":"小刘","age":18},
                {"user_id":"3","name":"小明","age":20}
            ]', 
            '\\[|\\]' , ''), 将json数组两边的中括号去掉
            
              '\\}\\,\\{' , '\\}\\;\\{'), 将json数组元素之间的逗号换成分号
                
                 '\\;') 以分号作为分隔符(split函数以分号作为分隔)
          ); 

 

posted @ 2023-08-31 16:53  酷酷的狐狸  阅读(123)  评论(0编辑  收藏  举报