从 JSON 格式的数组里面取值
时间: 2023-09-20 10:04:38 浏览: 97
如果要从 JSON 格式的数组中取值,可以使用 Hive 内置函数 `get_json_object` 或 `json_tuple`。
假设有一个 JSON 格式的数组字符串如下:
```
[{"name":"张三","age":20},{"name":"李四","age":22}]
```
如果想要提取数组中第一个元素的 `name` 字段,可以使用以下 `get_json_object` 函数来实现:
```
SELECT get_json_object('[{"name":"张三","age":20},{"name":"李四","age":22}]', '$[0].name');
```
执行结果是 `张三`。
如果想要提取数组中所有元素的 `name` 和 `age` 字段,可以使用 `json_tuple` 函数来实现:
```
SELECT jt.name, jt.age
FROM (SELECT get_json_object('[{"name":"张三","age":20},{"name":"李四","age":22}]', '$.name') AS name,
get_json_object('[{"name":"张三","age":20},{"name":"李四","age":22}]', '$.age') AS age) jt;
```
执行结果是:
```
+-------+------+
| name | age |
+-------+------+
| 张三 | 20 |
| 李四 | 22 |
+-------+------+
```
需要注意的是,如果数组中的每个元素的字段名和顺序都相同,也可以使用 Hive 内置的 `explode` 函数将数组拆分成多行,然后再使用 `json_tuple` 函数提取字段。
阅读全文