Вывод JSON в Postgresql

Я надеюсь, что я не пропускаю что-то очень очевидное здесь,
Я хочу получить вывод JSON из функции postgres (я полагаю, что многим другим это уже было нужно), и я буду рад установить на свой сервер расширение contrib-функций,

Есть ли способ получить вывод JSON из функций sql или plpgsql (или с помощью Python на стороне сервера базы данных)? В частности, я хочу получить мойrecord[] результаты в формате JSON.

Ответы на вопрос(4)

plpython плагин, безусловно, позволяет вам сделать это с помощьюpython JSON библиотека.

Вы можете сделать что-то вроде этого:

CREATE OR REPLACE FUNCTION myschema.tojsonfunc()
AS $    

   import json;
   jsonStr = json.dumps(myrecord)

$ LANGUAGE plpythonu;
 Ali26 июн. 2012 г., 03:17
Спасибо, проблема в том, что результаты SQL-запросов (записи AKA) не являются сериализуемыми SQL, как они есть, кому-то нужно время, чтобы "очистить" чтобы они соответствовали, и если бы я хотел это сделать, я бы лучше сделал это в моем реальном коде на python, и не стал бы загружать этим плохой db-сервер.
Решение Вопроса

Существует встроенная поддержка JSON, так какPostgreSQL 9.2 и он увеличился со многими другими функциями в более поздних версиях (например:JSON-функции в PostgreSQL 0.4).

Особенноrow_to_json преобразует запись в объект JSON иarray_to_json превращает массивы в массивы JSON.

Например, обе функции могут быть объединены, чтобы легко повернуть результатыSELECT запрос в JSON:

SELECT array_to_json(array_agg(row_to_json(t))) FROM 
    (SELECT col1, col2, col3 FROM example_table) t
 26 июн. 2012 г., 06:51
Вы проверили примеры в первой ссылке? Есть функцииquery_to_json(), array_to_json() а такжеrecord_to_json() которые принимают входные данные в соответствии с их именами и превращают его в JSON.
 06 июл. 2015 г., 17:43
Пожалуйста, обновите свой ответ соответствующими частями решения и обновите ссылки, так как они устарели.
 Ali26 июн. 2012 г., 03:18
Насколько я понимаю, это поддержка типа JSON, который содержит формат jsontext и проверяет его, он не производит вывод JSON.
 25 авг. 2014 г., 12:32
Первые 2 ссылки мертвы. Вот почему рекомендации по ответам StackOverflow рекомендуют нам:quote the relevant portion from a link.
 Ali26 июн. 2012 г., 14:17
Вы правы, я пропустилrow_to_json функция, это может решить мою проблему, спасибо.

использованиеrecord_to_json (...) с 9.2, теперь доступноперенесен на 9.1.

 06 июл. 2015 г., 16:02
Ни один из них на самом деле не работает.
 06 июл. 2015 г., 16:01
Ваша обратная ссылка isnowork :(

На сервере установите:
sudo apt-get install postgresql-plpython-9.4

Затем на вашем сервере Postgres:

CREATE EXTENSION IF NOT EXISTS plpythonu;
CREATE LANGUAGE plpythonu;

CREATE OR REPLACE FUNCTION prettyprint_json(data text)
 RETURNS json
 AS $
    import json
    return json.dumps(json.loads(data), indent=4)
 $ LANGUAGE plpythonu;

Ваш ответ на вопрос