JSON_TUPLE 函数

功能描述

JSON_TUPLE
JSON_TUPLE
函数用于解析
JSON
JSON
字符串中的键值对,并将指定的键对应的值提取出来。该函数接受一个
JSON
JSON
字符串作为输入,并根据提供的键列表(
c1
c1
c2
c2
、...、
cN
cN
)提取相应的值。如果
JSON
JSON
字符串解析失败,函数将返回全列为
NULL
NULL
的结果;如果某个键不存在于
JSON
JSON
对象中,对应的列将被填充为
NULL
NULL
。需要注意的是,
JSON_TUPLE
JSON_TUPLE
函数只能解析
JSON
JSON
对象的顶层键。

该函数可以直接使用,或者与

LATERAL VIEW
LATERAL VIEW
子句结合使用,以便在更复杂的查询中提取
JSON
JSON
数据。

参数说明

  • str
    str
    (string): 需要解析的
    JSON
    JSON
    字符串,该字符串应为一个
    JSON
    JSON
    对象。
  • c1
    c1
    ,
    c2
    c2
    , ...
    cN
    cN
    (string): 需要提取的
    JSON
    JSON
    对象中的键。

返回类型

  • 返回一个包含提取值的字符串数组,数量与提供的键列表长度相同。

使用示例

示例 1:基本用法

SELECT json_tuple('{"x" : "1", "y" : 2}', 'x', 'z'); +------+------+ | col0 | col1 | +------+------+ | 1 | | +------+------+

上述查询尝试提取键

x
x
z
z
的值。由于
z
z
键不存在,返回结果中
z
z
对应的值为空(
NULL
NULL
)。

示例 2:与 LATERAL VIEW 结合使用

SELECT a, b, c FROM VALUES ('{"a" : 1.0, "b" : 2}') AS t(word) LATERAL VIEW json_tuple(word, 'a', 'b', 'c') lv AS a, b, c; +-----+---+---+ | a | b | c | +-----+---+---+ | 1.0 | 2 | | +-----+---+---+

在这个例子中,我们首先创建了一个包含

JSON
JSON
字符串的表,然后使用
LATERAL VIEW
LATERAL VIEW
json_tuple
json_tuple
函数提取
a
a
b
b
c
c
键的值。由于
c
c
键不存在,其对应的值为空。

示例 3:嵌套 JSON 对象的处理

JSON_TUPLE
JSON_TUPLE
只解析顶层键。如果某个键的值本身是一个 JSON 对象,该值会以字符串形式原样返回,不会进一步展开。

SELECT json_tuple('{"a": {"x": 1}, "b": 2}', 'a', 'b'); +----------+------+ | col0 | col1 | +----------+------+ | {"x":1} | 2 | +----------+------+

如需提取嵌套字段,可以对返回的字符串再次调用

json_tuple
json_tuple
或使用
get_json_object
get_json_object

示例 4:JSON 解析失败时的行为

当输入字符串不是合法的 JSON 对象时,所有列均返回

NULL
NULL

SELECT json_tuple('not-a-json', 'a', 'b'); +------+------+ | col0 | col1 | +------+------+ | | | +------+------+

联系我们
预约咨询
微信咨询
电话咨询