在 PostgreSQL 中获取 JSONB 的紧凑版本

Kok*_*zzu 4 string jsonb postgresql-9.4

如何获取紧凑JSONBPostgreSQL

获取时我得到的只是空格:

 SELECT data FROM a_table WHERE id = 1; -- data is JSONB column

 {"unique": "bla bla", "foo": {"bar": {"in ...
^           ^         ^      ^       ^ --> spaces
Run Code Online (Sandbox Code Playgroud)

我想要的是:

{"unique":"bla bla","foo":{"bar":{"in ...
Run Code Online (Sandbox Code Playgroud)

Fra*_*ois 5

json_strip_nulls() 完全符合您的要求:

SELECT json_build_object('a', 1);
Run Code Online (Sandbox Code Playgroud)

返回

{"a" : 1}
Run Code Online (Sandbox Code Playgroud)

{"a" : 1}
Run Code Online (Sandbox Code Playgroud)

返回

{"a":1}
Run Code Online (Sandbox Code Playgroud)

此函数不仅会按照其函数名称和文档说明删除空值,而且还会删除无关紧要的空格。后者在 PostgreSQL 手册中没有明确记录。

在 PostgreSQL 11.3 中测试过,但可能也适用于早期版本。