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;