row_to_ json экспортирует «NULL» как «None» - PullRequest
1 голос
/ 27 февраля 2020

Мне нужно экспортировать строку таблицы в JSON и сохранить ее в таблице аудита, которая впоследствии читается и десериализуется приложением. NET. В Postgres есть функция, которая делает это:

row_to_json(..)

Моя проблема в том, что значения NULL экспортируются как «None» вместо «null»:

{'id': 'a55fe32b-e113-46a2-b54a-444a15922846', 'description': 'Some description'}
{'id': '195e4926-da42-453a-bb3f-789a823b22c0', 'description': 'Some other description'}
{'id': '31f2a08c-ac18-4579-ad5d-08d7f74557de', 'description': None}

Десериализация естественным образом завершается неудачей если я не создаю вручную некоторые логи c для замены Нет на null , но почему мне кажется, что я единственный человек, имеющий эту проблему? Я искал ответ и видел несколько примеров, когда null возвращается, как и ожидалось, из функции row_to_ json, хотя, очевидно, ни у кого больше нет этой проблемы.

Чего мне не хватает?

РЕДАКТИРОВАТЬ : я также получаю логические значения с заглавной буквы ( False вместо false - что прямо неверно JSON. Что-то не так с моей версией row_to_ json (..) ...

EDIT 2 : я использую Azure Data Studio с расширением Postgres (microsoft.azuredatastudio- postgresql). Это оказалось виновником, другие клиенты работают как положено и возвращают null .

Ответы [ 2 ]

1 голос
/ 02 марта 2020

Благодаря комментарию от @ Laurenz Albe Я попытался выполнить запрос в другом клиенте. Ошибка находится в расширении Postgres для Azure Data Studio, а другие клиенты (DataGrip) возвращают ноль , как и ожидалось.

0 голосов
/ 27 февраля 2020

В зависимости от того, чего вы хотите достичь, функция json_strip_nulls удалит все поля, содержащие нули. Ниже приведен пример:

SELECT json_strip_nulls(your_json)
FROM (select row_to_json(row) your_json from (select * from <your_table>) row) p
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...