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になります。
•ユニオン演算子と配列スライス演算子は、この関数ではサポートされていません。
例
以下は、GET_JSON_OBJECTを使用する簡単な例です。
PROCEDURE JSONPathFunctionExample(OUT resultJson VARCHAR)
BEGIN
DECLARE sourceJson VARCHAR(4096);
DECLARE jsonPathExpression VARCHAR(4096);
--Create a JSON value to use in the JSONPATH function
SET sourceJson = '{"LookupProductResponse":{"LookupProductResult":{"row":[
{"ProductName":"Maxtific 40GB ATA133 7200","ProductID":"1","ProductDescription":"Maxtific Storage 40 GB"}
]}}}';
--Create a JSONPATH expression to evaluate
SET jsonPathExpression = '$.LookupProductResponse.LookupProductResult.row[0].ProductName';
--Evaluate the XPATH expression against the source XML value
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;