我的hive表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"}]我已经尝试过这个hive:
select split(tag, ";") from test_tbl;但是我得到了字符串数组,而不是想要的字符串:
["{"keyword":"abc","score": "0.6"}","{"keyword":"烟花","score":"0.516409816917747"}"]发布于 2021-03-10 08:52:30
如果要获得array>类型,则可能需要拆分数组和解析结构元素。如果您只想获得JSON字符串,则只需进行字符串操作:替换和连接。
用逗号替换花括号之间的分号,用方括号连用
concat('[',regexp_replace(tag_score ,'\\}\073\\{','},{'),']')\073 -是分号。
如果它可以是圆括号和分号之间的空格,使用'\\}\\s*\073\\s*\\{' regexp,它将与任意数量的空格一样工作,如:} ; {
https://stackoverflow.com/questions/66560502
复制相似问题