我的JSON数据是:
{
"content":"{\"type\":3,\"from\":\"home\"}",
"id":"239",
"idtype":"0",
"timestamp":"1547957367281",
"type":"0"
}
我想以以下格式将其放入表json_data中:
+-------------+
| from |
+-------------+
| home |
+-------------+
如何从此处使用爆炸功能获得所需的输出?
最佳答案
您可以使用regexp_replace删除\
,也应删除"
之前和之后的{
。使用}
或json_tuple提取属性。在您的数据示例上进行测试:
select get_json_object(json,'$.content.from') as `from`
from
(
select
regexp_replace(
regexp_replace(
regexp_replace(
'{"content":"{\"type\":3,\"from\":\"home\"}",
"id":"239",
"idtype":"0",
"timestamp":"1547957367281",
"type":"0"
}' --original data
,'\\\"','\"') --replace \" with "
,'\\"\\{','{') --remove " before {
,'\\}\\"','\\}') --remove " after } --these last two can be combined
as json
)s
;
输出:
OK
from
home
Time taken: 0.329 seconds, Fetched: 1 row(s)
最好一一检查这些regexp_replaces以确保其正常工作。希望你有主意
关于json - hive :解析JSON包含\“,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54289524/