Postgres 9.3 JSON 输出多维对象

2024-06-26

鉴于此查询:-

SELECT id as id,
       attributes->>'name' as file_name, 
       status 
from workflow.events 
where schema='customer' 
  and type='FILE_UPLOAD'

id,file_name, status
1,name,status
2,name2,status2

我想输出这个结构:-

{
 "1" :{"id" :"1", "file_name" : "name", "status" : "status1"},
 "2" :{"id" :"2", "file_name" : "name2","status" : "status2"}
}

我现在可以使用字符串函数来完成此操作,但这看起来很混乱且效率低下。可以使用本机 postgresql json 函数来完成吗?


如果你想用json获取两条记录,使用row_to_json() http://www.postgresql.org/docs/current/interactive/functions-json.html功能:

with cte as (
    select 
        id as id,
        attributes->>'name' as file_name, 
        status 
     from workflow.events 
     where schema='customer' and type='FILE_UPLOAD'
)
select row_to_json(c) from cte as c

output:

{"id":1,"file_name":"name","status":"status"}
{"id":2,"file_name":"name2","status":"status2"}

如果你想获取json数组:

with cte as (
    select 
        id as id,
        attributes->>'name' as file_name, 
        status 
     from workflow.events 
     where schema='customer' and type='FILE_UPLOAD'
)
select json_agg(c) from cte as c

output:

[{"id":1,"file_name":"name","status":"status"}, 
 {"id":2,"file_name":"name2","status":"status2"}]

但对于您想要的输出,我只能建议字符串转换:

with cte as (
    select 
        id::text as id,
        file_name, 
        status 
    from workflow.events 
    where schema='customer' and type='FILE_UPLOAD'
)
select ('{' || string_agg('"' || id || '":' || row_to_json(c), ',') || '}')::json from cte as c

sql fiddle demo http://sqlfiddle.com/#!12/a22b1/7

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Postgres 9.3 JSON 输出多维对象 的相关文章

随机推荐

  • 准确的JSON文本编码检测

    RFC4627 中描述了一种在 BOM 不存在时识别 Unicode 编码的方法 这依赖于 JSON 文本中的前 2 个字符始终是 ASCII 字符 但在RFC7159中 规范将JSON文本定义为 ws value ws 意味着单个字符串值
  • Python/Pandas –– ParserError:标记数据时出错。 C 错误:第 i 行中预期有 x 字段,但看到了 y

    我需要一些帮助 我正在使用以下代码 matplotlib inline import csv from datetime import datetime import numpy as np import pandas as pd from
  • 如何编写带有回调的简单react-native本机模块

    如何以最简单的方式完成这项工作 我无法将回调发送到react native 可能我错过了一些东西 ReactMethod public void testCallback Callback cb String sampleText Java
  • 根据id统计div元素

    我有一个类似的页面 div div div div div div div div div div div div 我想知道 id 与表达式 box content X text 其中 X 是数字 匹配的 div 的数量 我可以使用纯 ja
  • 良好的 WPF 或 silverlight windows 小工具示例

    有人有 WPF 或 silverlight windows 小工具的好例子吗 诺兰多02 您好 我在网上看到了一些侧边栏小工具演示和教程 我将在这里列出它们以供您审查 希望其中一些能引起您的注意 并为您的努力提供帮助 WPF http ww
  • 将颜色名称转换为十六进制代码的 Javascript 函数

    是否有一个内置函数可以将颜色按名称转换为其十六进制表示形式 就像我想传递 白色 并接收 FFFFFF 我真的想避免自己编写一百个 if 代码 不 但使用在这里列出 https www w3schools com colors colors
  • 如何在 Windows 路径中使用卷标?

    我想使用批处理文件从可移动驱动器复制文件 无论它获得的驱动器号是什么 到目前为止 还没有去 似乎没有任何现成的命令或第三方命令行工具可以处理基于卷标签的路径 我尝试了 FreeFileSync 但它可以大批量工作 并且我在这里需要精确的文件
  • 为什么 kafka 生产者在初始化时采用代理端点而不是 zk

    如果我有多个经纪人 我的制作人应该使用哪个经纪人 我需要手动切换broker来平衡负载吗 另外 为什么消费者只需要 Zookeeper 端点而不是 Broker 端点 教程中的快速示例 gt bin kafka console produc
  • 在不同的队列系列上重用相同的主机可见缓冲区

    考虑主机可见缓冲区 主要与流缓冲区相关 即由VK MEMORY PROPERTY DEVICE LOCAL BIT VK MEMORY PROPERTY HOST VISIBLE BIT内存 让我们想象一下以下使用模式 将新数据写入主机上的
  • Android 中 Facebook 和 Google+ 登录的 onActivityResult 代码

    Android 中登录的 Facebook API 代码很简单 方法如下活动结果 is protected void onActivityResult int requestCode int resultCode Intent data s
  • Redis 与 SQL Server 性能对比

    应用程序性能是使用缓存而不是关系数据库的主要原因之一 因为它以键值对的形式将数据存储在内存中 所以我们可以将经常访问的不经常更改的数据存储在缓存中 从缓存中读取比从数据库中读取要快得多 Redis 是分布式缓存市场上最好的解决方案之一 我正
  • 如何在flutter中使用API​​调用嵌套的json数据?

    我的 JSON 看起来像这样 Info c type id 1 cleaning type A Cleaning c type id 2 cleaning type B Cleaning c type id 3 cleaning type
  • 如何融化数据框以获取范围内的所有日期?

    我有一个这样的数据集 import pandas as pd pd DataFrame col1 1 2 start date 1 3 2019 1 10 2019 end date 1 5 2019 1 12 2019 我想为开始日期和结
  • ASP.NET MVC 2 - 请求编码问题

    Hello 有一个控制器和一个通过 GET 接收一个参数的操作 大致如下 www site com controller action query Problem 示例 1 www site com controller action qu
  • C++ 中输出流的右对齐

    我正在使用 C 工作 我得到一个 10 位数字的字符串 字符数组 其中可能有也可能没有 3 个破折号 使其最多 13 个字符 是否有一种内置的流方式可以正确地证明它 我将如何打印到右对齐的流 是否有内置函数 方法可以执行此操作 或者我是否需
  • 关于相同的应用程序,但不同的应用程序商店有不同的二进制文件

    我有一个新的应用程序要在不久的将来推出 该应用程序将针对不同地区的应用程序商店提供不同的版本 包括 UI 语言和部分应用程序内容 我的问题是我是否可以创建不同的应用程序 不同的捆绑包 ID 和不同的应用程序的 iTunes 应用程序名称 但
  • 如何理解javascript React中的这段代码

    我在网上找到了这个函数在js中的实现 这个函数递归地过滤一个对象数组 每个对象可能有属性 children 它是对象数组 并且对象也可能有孩子等等 该函数工作正常 但我有点不明白 这是我的功能 getFilteredArray array
  • 如何在 NPM 中通过 package.json 使用 gitlab 存储库

    我正在开展一个内部项目 想在小组内分享一个工具 但如果我使用 npm 工具 它要么请求模块已在 npm 网站或公共 git 存储库上注册 我正在使用 gitlab 并且有一个私人令牌 git https gitlab ci token
  • 在eclipse java项目中加载dll文件

    我正在尝试添加文件sqljdbc auth dll到项目库 我将包含 dll 的文件夹添加为外部类文件夹 在这里 我基本上尝试使用 Microsoft 提供的 SQL 驱动程序连接到我的 SQL SERVER 2008 数据库 我的代码是
  • Postgres 9.3 JSON 输出多维对象

    鉴于此查询 SELECT id as id attributes gt gt name as file name status from workflow events where schema customer and type FILE