web-dev-qa-db-ja.com

Postgres: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\""

ありがとう。

追伸PostgreSQL 9.3を使用しています

74
e79ene

PostgreSQLには、スカラーJSONオブジェクトを分解する方法はありません。したがって、あなたが指摘するように、

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

15

トリックは、JSONを1つのJSON要素の配列に変換し、->>を使用してその要素を抽出することです。

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

11を返します。

42

9.4.4では、 #>> 演算子を使用すると動作します:

select to_json('test'::text) #>> '{}';

テーブル列で使用するには:

select jsoncol #>> '{}' from mytable;
112
Ian Timothy

これを行う簡単な方法:

SELECT  ('[' || to_json('Some "text"'::TEXT) || ']')::json ->> 0;

JSON文字列をJSONリストに変換するだけです

0
Zhemin Zhou