首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单元中将字符串数组转换为json字符串?

如何在单元中将字符串数组转换为json字符串?
EN

Stack Overflow用户
提问于 2021-03-10 07:55:29
回答 1查看 760关注 0票数 1

我的hive表test_tbl有一个字符串字段tag_score,其中包含由“;”分隔的一些json字符串:

代码语言:javascript
复制
----------
tag_score |
--------------------------------------------------------------------------------
{"keyword":"abc","score": "0.6"};{"keyword":"烟花","score":"0.516409816917747"} |
--------------------------------------------------------------------------------

我如何从其中提取正确的json?结果字符串应该如下所示:

代码语言:javascript
复制
[{"keyword":"abc","score": "0.6"},{"keyword":"烟花","score":"0.516409816917747"}]

我已经尝试过这个hive:

代码语言:javascript
复制
select split(tag, ";") from test_tbl;

但是我得到了字符串数组,而不是想要的字符串:

代码语言:javascript
复制
["{"keyword":"abc","score": "0.6"}","{"keyword":"烟花","score":"0.516409816917747"}"]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-10 08:52:30

如果要获得array>类型,则可能需要拆分数组和解析结构元素。如果您只想获得JSON字符串,则只需进行字符串操作:替换和连接。

用逗号替换花括号之间的分号,用方括号连用

代码语言:javascript
复制
concat('[',regexp_replace(tag_score ,'\\}\073\\{','},{'),']')

\073 -是分号。

如果它可以是圆括号和分号之间的空格,使用'\\}\\s*\073\\s*\\{' regexp,它将与任意数量的空格一样工作,如:} ; {

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66560502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档