PostgreSQL-Ergebnismenge als JSON-Array zurückgeben?
Ich möchte, dass PostgreSQL das Ergebnis einer Abfrage als ein JSON-Array zurückgibt. Gegeben
create table t (a int primary key, b text);
insert into t values (1, 'value1');
insert into t values (2, 'value2');
insert into t values (3, 'value3');
Ich hätte gerne etwas Ähnliches wie
[{"a":1,"b":"value1"},{"a":2,"b":"value2"},{"a":3,"b":"value3"}]
oder
{"a":[1,2,3], "b":["value1","value2","value3"]}
(Eigentlich wäre es sinnvoller, beide zu kennen). Ich habe einige Dinge ausprobiert wie
select row_to_json(row) from (select * from t) row;
select array_agg(row) from (select * from t) row;
select array_to_string(array_agg(row), '') from (select * from t) row;
Und ich fühle mich nah, aber nicht wirklich da. Sollte ich mir andere Unterlagen ansehen, außer9.15. JSON-Funktionen und -Operatoren?
Bei meiner Idee bin ich mir übrigens nicht sicher. Ist das eine übliche Designentscheidung? Ich denke, ich könnte natürlich das Ergebnis (zum Beispiel) der ersten der oben genannten 3 Abfragen nehmen und es in der Anwendung leicht manipulieren, bevor ich es an den Client weitergebe, aber wenn PostgreSQL das endgültige JSON-Objekt direkt erstellen kann, Es wäre einfacher, da ich meiner Anwendung noch keine Abhängigkeit von einer JSON-Bibliothek hinzugefügt habe.