一尘不染

Postgres:如何将json字符串转换为文本?

json

Json值可以包含一个字符串值。例如。:

postgres=# SELECT to_json('Some "text"'::TEXT);
     to_json
-----------------
 "Some \"text\""

如何提取该字符串作为postgres文本值?

::TEXT不起作用。它返回带引号的json,而不是原始字符串:

postgres=# SELECT to_json('Some "text"'::TEXT)::TEXT;
     to_json
-----------------
 "Some \"text\""

谢谢。

PS我正在使用PostgreSQL 9.3


阅读 930

收藏
2020-07-27

共1个答案

一尘不染

PostgreSQL中没有办法解构标量JSON对象。因此,正如您所指出的,

select  length(to_json('Some "text"'::TEXT) ::TEXT);

是15

诀窍是将JSON转换为一个JSON元素的数组,然后使用提取该元素->>

select length( array_to_json(array[to_json('Some "text"'::TEXT)])->>0 );

将返回11。

2020-07-27