0%

hive中操作json以及对list的处理

在处理数据时,时常会遇到需要处理json数据的情况, 可以使用get_json_object, regexp_replace, split来组合对json数组进行处理

假设json数据为

1
2
3
{
"data": ["text1", "text1"]
}

我们需要将data提取后转换为字符串形式”text1,text2”, 可以使用如下写法实现

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
concat_ws(';',
split(
regexp_replace(
get_json_object(
'{"data": ["text1", "text2"]}',
'$.data'
),
'[\\[\\]"\\s]', ''
),
','
)
);

首先使用get_json_object将json中需要的字段提取出来, 然后使用regexp_replace对输出的字符串进行处理, 正则[\\[\\]"\\s]会将[, ], "以及空白符号删除, 最后输出text1,text2, split函数会使用,作为分割符, 将字符串转换为array, 最后concat_ws通过;将array中的所有字符串拼接。

写正则表达式时,不同的系统可能会有不同的转义规则,需要特别注意\的数量。