首页 > 解决方案 > 无法使用 json_build_object 从 postgreSQL 查询创建大型 json 对象

问题描述

我正在尝试使用 json_build_object 从我的查询中创建一个 json 对象,如下所示:

Select json_agg(json_build_object('first_name',first_name,
                                  'last_name',last_name,
                                  'email',email,
                                  'date_joined',date_joined,
                                  'verification_date',verification_date,
                                  'zip_code',zip_code,
                                  'city',city,
                                  'country',country)) 
from users 
WHERE last_name= 'xyz'

json 对象在上面显示的列数下构建良好,但是当我添加所有列名时,查询会无限期地卡住/挂起,并且不显示错误消息。我减少了查询中的列数,它返回了一个正确的 json 对象。有人对此有任何想法吗?谢谢

我在省略 json_agg 后也尝试了查询,但结果仍然相同

标签: sqljsonpostgresql

解决方案


我不确定您的查询为什么会挂起 - 可能是 args 的数量有限制 - 但由于您正在以一种简单的方式构建每个 JSON 对象(属性名称与列名称相同),请尝试row_to_json像这样使用:

select json_agg(row_to_json(u.*)) from users u WHERE last_name = 'xyz';

无论如何,拥有数十或数百个参数并不好。


推荐阅读