GET_JSON_OBJECT
GET_JSON_OBJECT は、JSON パスに基づいて JSON 文字列から JSON オブジェクトを抽出し、抽出された JSON オブジェクトの JSON 文字列を返します。
構文
GET_JSON_OBJECT (STRING json_string, STRING json_path)
備考
|
•
|
json_path 引数には、数字、小文字、アンダースコア ( _ ) のみを含めることができます。 |
|
•
|
Hive/Hadoop カラム名の制限により、キーを数字で始めることはできません。 |
|
•
|
この関数は、「..」を使用した再帰的降下をサポートしていません。 |
|
•
|
この関数はフィルター式 '[? (<expression>) ] をサポートしていません。 |
|
•
|
入力 JSON 文字列が無効な場合、戻り値は NULL です。 |
|
•
|
UNION オペレーターとアレイ スライスオペレーターは、この関数ではサポートされていません。 |
例
以下は、GET_JSON_OBJECT を使用する簡単な例です。
PROCEDURE JSONPathFunctionExample (OUT resultJson VARCHAR)
BEGIN
DECLARE sourceJson VARCHAR (4096) ;
DECLARE jsonPathExpression VARCHAR (4096) ;
-- JSONPATH 関数で使用する JSON 値を作成します。
SET sourceJson = '{"LookupProductResponse":{"LookupProductResult":{"row":[{"ProductName":"Maxtific 40GB ATA133 7200","ProductID":"1","ProductDescription":"Maxtific Storage 40 GB"}]}}}';
-- 評価する JSONPATH 式を作成します。
SET jsonPathExpression = '$.LookupProductResponse.LookupProductResult.row[0].ProductName';
-- ソース XML 値に対して XPATH 式を評価します。
SET resultJson = JSONPATH (sourceJson, jsonPathExpression) ;
END
この例の出力は「Maxtific40GBATA1337200」です。
GET_JSON_OBJECT を使用して、アレイを反復処理し、エレメントをカウントすることもできます。
SET i = 0;
SET jsonobject = GET_JSON_OBJECT (jsonstring,'$.array_element[‘||CAST (i AS VARCHAR) ||‘]') ;
WHILE jsonobject NOT NULL DO
SET i = i + 1 ;
SET jsonobject = GET_JSON_OBJECT(jsonstring,'$.array_element[‘||CAST(i AS VARCHAR)||‘]') ;
END DO;