You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BigQuery如何从JSON数组对象中提取toppings键对应的值?

提取JSON数组中指定键对应的值(不解嵌套)

你的字符串列存储的是JSON数组,每个元素是单个键值对的对象,所以直接用$.toppings会返回null——因为根结构是数组,不是包含toppings键的单个对象。

可以不解嵌套实现提取,以下是几种可行方法(以Snowflake为例):

方法1:使用JSON路径过滤

通过JSON路径的条件筛选,定位到数组中包含toppings键的元素,再提取对应值:

SELECT json_extract(parse_json(string_object_column), '$[?(@.toppings)]')[0].toppings::string AS toppings_value
FROM your_table;
  • $[?(@.toppings)]:筛选数组中存在toppings键的所有元素
  • [0]:取筛选结果的第一个元素(你的数据中只有一个匹配项)
  • ::string:将JSON值转为字符串类型

方法2:使用数组过滤函数

利用数组过滤和array_first找到目标对象,再提取值:

SELECT array_first(filter(parse_json(string_object_column), x -> object_has_key(x, 'toppings'))):toppings::string AS toppings_value
FROM your_table;
  • filter(...):遍历数组,筛选出包含toppings键的对象
  • array_first:取筛选后的第一个对象
  • :toppings:提取对象中的toppings值

方法3:直接用json_value提取

json_value会自动返回路径匹配的第一个非null值:

SELECT json_value(parse_json(string_object_column), '$[*].toppings') AS toppings_value
FROM your_table;
  • $[*].toppings:遍历数组所有元素,提取每个元素的toppings值,json_value会返回第一个非null的结果

内容的提问来源于stack exchange,提问作者renaudb3

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:40:13