代码之家  ›  专栏  ›  技术社区  ›  Alfred Balle

PostgreSQL输出到JSON对象/数组

  •  2
  • Alfred Balle  · 技术社区  · 6 年前

    我正在运行PostgreSQL并尝试转换此:

    SELECT car_id AS id, car_model AS model FROM cars
    

    进入这个:

    [{ "id" : 123, "model" : "Fiat" }, {"id": 124, "model": "BMW"}, ...]
    

    我试过:

    SELECT json_agg(
               json_build_object(car_id AS id),
               json_build_object(car_model AS model)
           ) FROM cars
    

    还有很多其他的东西,但是好像卡住了

    1 回复  |  直到 6 年前
        1
  •  2
  •   D-Shih    6 年前

    你只能试着用一个 json_build_object 在里面 json_agg 功能。

    json_build_对象 从文件中解释。

    从可变参数列表中生成一个JSON对象。按照惯例,参数列表由交替的键和值组成。

    使用 json_build_object 函数参数如下

    json_build_对象([key1],[Key_Value1],[key2],[Key_Value2]…)

    测试dll

    CREATE TABLE cars(
       car_id INT,
       Car_Model VARCHAR(50)
    );
    
    INSERT INTO cars VALUES (1,'TEST1');
    INSERT INTO cars VALUES (2,'TEST2');
    

    查询

    SELECT json_agg(json_build_object('ID', car_id , 'Model', car_model ))
    from cars
    

    结果

    |                                                         result |
    |----------------------------------------------------------------|
    | [{"ID" : 1, "Model" : "TEST1"}, {"ID" : 2, "Model" : "TEST2"}] |
    

    sqlfiddle