postgesql将json_build_对象作为每个分组的json数组的父对象返回,如下所示:

{
  "status": "success",
  "stories": [{
        "json_build_object": {
          "CNN": []
        }
      },
      {
        "json_build_object": {
          "FOX": []
        }
      },
      {
        "json_build_object": {
          "Huffpost": []
        }
      },...

Postgresql返回“json_build_对象”作为键。
是否可以替换为group by返回的stories.source值?
SELECT json_build_object(source, json_agg(stories.*))
FROM stories
GROUP BY stories.source
ORDER BY source;

最佳解决方案是这样的响应:
 stories:
  CNN: [],
  FOX: []...

我肯定我错过了在Postgresql中返回JSON的最佳实践。。。

最佳答案

在SQL中必须有一种方法可以做到这一点,但是由于现在缺少这种方法,您可以将stories属性转换为正确的对象:

function convert(stories) {
    const res = {};
    for (let i = 0; i < stories.length; i++) {
        const obj = stories[i].json_build_object;
        const name = Object.keys(obj)[0];
        res[name] = obj[name];
    }
    return res;
}

关于json - PostgreSQL build_json_object返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45203307/

10-09 06:11