リファレンスガイド> SQL関数のTDVサポート> 文字関数> GET_JSON_OBJECT
 
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;