2016-06-30 12 views
1

Ich muss eine JSON-Datei für einen dataTables-Abschnitt auf meiner Website generieren. Das Format des JSON sollte wie folgt aussehen:Exportieren von Postgres-Zeilen als JSON-Datei

{ 
     "data": [ 
       [ 
         "Tiger Nixon", 
         "System Architect", 
         "Edinburgh", 
         "5421", 
         "2011/04/25", 
         "$320,800", 
       ], 
       [ 
         "Garrett Winters", 
         "Accountant", 
         "Tokyo", 
         "8422", 
         "2011/07/25", 
         "$170,750" 
       ], 
     ] 
} 

Dieses Format sieht aus wie ein Array von Arrays auf dem JSON Creation Functions (Table 9-42.) aufgeführt - array_to_json.

Meine Daten werden jedoch nicht als Arrays in meiner Datenbank gespeichert. Es sind typische Zeilendaten.

Aber wenn ich versuche, mit "row_to_json" nach JSON zu exportieren - das Format ist weg von dem, was ich brauche. See this SQLfiddle example.

Grundsätzlich versuche ich herauszufinden, die beste Vorgehensweise, um den JSON-Export mehr wie das oben eingefügte Format aussehen zu lassen.

Sollte ich meine Zeilen zuerst in Arrays formatieren und sie in einer neuen Tabelle speichern, wenn sie also "row_to_json" verwenden, kommen sie als Arrays heraus? Oder gibt es einen besseren Weg?

Antwort

3

Wählen Sie Zeilen als Arrays und verwenden json_agg(array_to_json(...)):

select 
    json_build_object(
     'data', 
     json_agg(array_to_json(array[price::text, qty::text]))) 
from data; 

       json_build_object     
---------------------------------------------------- 
{"data" : [["11","11"], ["22","11"], ["33","11"]]} 
(1 row) 

Sie benötigen eine Funktion in Postgres 9.4 eingeführt, so SqlFiddle nutzlos ist.

+0

'json_build_object' ist von 9.4 –

+0

SQLFiddle ist sowieso ärgerlich –

+0

Das war super hilfreich, vielen Dank. – some1