TRY_FROM_JSON
功能概述
将 JSON 字符串解析为指定的结构化类型(STRUCT、ARRAY、MAP 等)。解析失败时不报错,而是在结果中填充 NULL 并附带错误信息,适合处理格式不确定的 JSON 数据。
与
FROM_JSON
FROM_JSON
的区别:
FROM_JSON
FROM_JSON
解析失败时报错;
TRY_FROM_JSON
TRY_FROM_JSON
解析失败时返回带
_error_msg
_error_msg
字段的结果。
语法
TRY_FROM_JSON(<json_str>, <type_str>)
参数说明
<json_str>
<json_str>
:STRING 类型,待解析的 JSON 字符串。
<type_str>
<type_str>
:STRING 类型,目标类型描述,如 'STRUCT<a:INT>'
'STRUCT<a:INT>'
、'ARRAY<STRING>'
'ARRAY<STRING>'
。
使用示例
-- 解析成功:返回结构体,_error_msg 为空
SELECT try_from_json('{"a":1}', 'STRUCT<a:INT>');
-- {"a":1,"_error_msg":""}
-- 解析失败:返回结构体,字段值为 NULL,_error_msg 包含错误详情
SELECT try_from_json('invalid', 'STRUCT<a:INT>');
-- {"a":null,"_error_msg":"failed to parse json | BAD_FIELD | error position `invalid`"}
-- 提取具体字段
SELECT (try_from_json('{"a":1}', 'STRUCT<a:INT>')).a AS val;
-- 1
相关文档