微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我有一个名为 heart_rate_json 的 Postgresql 表,其中有一个名为 data 的 JSON 列,其中包含一个像这样的对象数组:

[{
  "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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。