包含对象数组的 Postgresql JSON 列的查询返回空值

柯蒂斯普

我有heart_rate_json一个用 JSON 列命名的Postgresql 表,该列data包含一个对象数组,如下所示:

[{
  "dateTime" : "01/24/15 21:07:45",
  "value" : {
    "bpm" : 70,
    "confidence" : 0
  }
},{
  "dateTime" : "01/24/15 21:08:30",
  "value" : {
    "bpm" : 64,
    "confidence" : 2
  }
 }]

当我运行此查询希望提取数组对象值时:

SELECT 
data -> 'dateTime' AS datetime,
data -> 'value' ->> 'bpm' AS bpm,
data -> 'value' ->> 'confidence' AS confidence 
FROM heart_rate_json;

查询结果有三列,但所有值都是[null]

选择data列确实会返回包含整个对象数组的结果:

SELECT data FROM heart_rate_json;

我在这里缺少什么?

纳乔斯皮乌

您需要首先将 JSON 数组扩展为一组 JSON 元素(您可以使用 : json_array_elements(json)):

SELECT 
      data -> 'dateTime' AS datetime,
      data -> 'value' ->> 'bpm' AS bpm,
      data -> 'value' ->> 'confidence' AS confidence 
FROM (SELECT json_array_elements(data) AS data FROM heart_rate_json) AS sq;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章