我的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/

10-10 05:19