35.81 SDO_UTIL.TO_JSON_VARCHAR

書式

SDO_UTIL.TO_JSON_VARCHAR(
     geometry  IN SDO_GEOMETRY 
     ) RETURN VARCHAR2;

説明

SDO_GEOMETRYオブジェクトをVARCHAR2形式のJSONオブジェクトに変換します。

パラメータ

geometry

JSONオブジェクトに変換する、SDO_GEOMETRY形式のジオメトリ。

使用上のノート

Oracle Databaseに格納されているJSONデータの使用の詳細は、『Oracle Database JSON開発者ガイド』を参照してください。

SpatialによるJSONのサポートの詳細は、Oracle SpatialでのJSONおよびGeoJSONのサポートを参照してください。

このファンクション(VARCHAR2の結果を戻す)の実行速度は、SDO_UTIL.TO_JSON (CLOBの結果を戻す)より速いです。ただし、非常に小さいジオメトリでしか使用できません。4000バイト超(またはデータベース・パラメータMAX_STRING_SIZEがEXTENDEDに設定されている場合は、32767バイト)のJSONを生成するジオメトリは、切り捨てられた無効なJSONオブジェクトとなります。

JSON形式のジオメトリをSDO_GEOMETRYオブジェクトに変換するには、SDO_UTIL.FROM_JSONファンクションを使用します。

次の例では、JSON形式への変換と逆変換を示します。(例では、「空間データの挿入、索引付けおよび問合せの例」の特にCOLA_MARKETS表のcola_bジオメトリについて、その定義およびデータを使用しています。)

DECLARE
  cola_b_geom   SDO_GEOMETRY;
  returned_geom SDO_GEOMETRY;
  returned_json VARCHAR2(4000);
BEGIN
  -- Populate geometry variable with cola market cola_b shape.
  SELECT c.shape into cola_b_geom FROM cola_markets c
  WHERE c.name = 'cola_b';
  -- From geometry to JSON
  returned_json := SDO_UTIL.TO_JSON_VARCHAR(cola_b_geom);

  -- From JSON to geometry
  returned_geom := SDO_UTIL.FROM_JSON(returned_json);
END;
/

次の例では、指定したジオメトリを表すGeoJSONオブジェクトを示します。(この場合、ジオメトリ定義は、COLA_MARKETS表のcola_bジオメトリ(「空間データの挿入、索引付けおよび問合せの例」を参照)を反映します。)

SELECT SDO_UTIL.TO_JSON_VARCHAR(
  SDO_GEOMETRY(2003, NULL, NULL, 
    SDO_ELEM_INFO_ARRAY(1, 1003, 1), 
    SDO_ORDINATE_ARRAY(5, 1, 8, 1, 8, 6, 5, 7, 5, 1))) JSON 
FROM DUAL;  
JSON
------
{"polygon": {"boundary": [{"line": {"datapoints": [[5.0, 1.0], [8.0, 1.0], [8.0, 6.0], [5.0, 7.0], [5.0, 1.0]]}}]}}