如何在配置单元中将字符串数组转换为 json 字符串?
How to convert array of string into json string in hive?
我的配置单元 table test_tbl
有一个字符串字段 tag_score
,其中包含一些 json 由“;”分隔的字符串:
----------
tag_score |
--------------------------------------------------------------------------------
{"keyword":"abc","score": "0.6"};{"keyword":"烟花","score":"0.516409816917747"} |
--------------------------------------------------------------------------------
如何从中提取正确的 json?结果字符串应该是这样的:
[{"keyword":"abc","score": "0.6"},{"keyword":"烟花","score":"0.516409816917747"}]
我试过这个蜂巢sql:
select split(tag, ";") from test_tbl;
但我得到的是字符串数组,不是我想要的:
["{"keyword":"abc","score": "0.6"}","{"keyword":"烟花","score":"0.516409816917747"}"]
如果要获取数组> 类型,您可能需要拆分数组并解析结构元素。如果你只想得到 JSON 字符串,你所需要的只是字符串操作:替换和连接。
用逗号替换大括号之间的分号,用方括号连接
concat('[',regexp_replace(tag_score ,'\}3\{','},{'),']')
3
- 是分号。
如果大括号和分号之间可以有空格,使用'\}\s*3\s*\{'
正则表达式,它对任意数量的空格都有效,像这样:} ; {
我的配置单元 table test_tbl
有一个字符串字段 tag_score
,其中包含一些 json 由“;”分隔的字符串:
----------
tag_score |
--------------------------------------------------------------------------------
{"keyword":"abc","score": "0.6"};{"keyword":"烟花","score":"0.516409816917747"} |
--------------------------------------------------------------------------------
如何从中提取正确的 json?结果字符串应该是这样的:
[{"keyword":"abc","score": "0.6"},{"keyword":"烟花","score":"0.516409816917747"}]
我试过这个蜂巢sql:
select split(tag, ";") from test_tbl;
但我得到的是字符串数组,不是我想要的:
["{"keyword":"abc","score": "0.6"}","{"keyword":"烟花","score":"0.516409816917747"}"]
如果要获取数组
用逗号替换大括号之间的分号,用方括号连接
concat('[',regexp_replace(tag_score ,'\}3\{','},{'),']')
3
- 是分号。
如果大括号和分号之间可以有空格,使用'\}\s*3\s*\{'
正则表达式,它对任意数量的空格都有效,像这样:} ; {