3.5.10. JSON 関数


JSON 関数は、JSON (JavaScript Object Notation)データを操作する機能を提供します。

サンプル用のデータのサンプル

XML 関数で提供される例は、以下のテーブル構造を使用します。

TABLE  Customer (
    CustomerId integer PRIMARY KEY,
    CustomerName varchar(25),
    ContactName varchar(25)
    Address varchar(50),
    City varchar(25),
    PostalCode varchar(25),
    Country varchar(25),
);
Copy to Clipboard Toggle word wrap

データを使用

Expand
customeridCustomerNameContactNameアドレスCityPostalCode

87

Wartian Herku

Pirkko Koskitalo

Torikatu 38

Oulu

90110

フィンランド

88

Wellington Importadora

親の親

Rua do Mercado, 12

Resende

08737-363

ブラジル

89

white CloverMarks

karl Jablonski

305 - 14th Ave.S. Suite 3B

Seattle

98128

USA

JSONARRAY

JSON アレイを返します。

JSONARRAY(value...)
Copy to Clipboard Toggle word wrap

value は、JSON 値に変換できるオブジェクトです。詳細は、「 JSON 関数 」を参照してください。戻り値は JSON です。

null 値は結果に null リテラルとして含まれます。

混合値の例

jsonArray('a"b', 1, null, false, {d'2010-11-21'})
Copy to Clipboard Toggle word wrap

戻り値

["a\"b",1,null,false,"2010-11-21"]
Copy to Clipboard Toggle word wrap

テーブルでの JSONARRAY の使用

SELECT JSONARRAY(CustomerId, CustomerName)
FROM   Customer c
WHERE  c.CustomerID >= 88;
==========================================================
[88,"Wellington Importadora"]
[89,"White Clover Markets"]
Copy to Clipboard Toggle word wrap

JSONOBJECT

JSON オブジェクトを返します。

JSONARRAY(value [as name] ...)
Copy to Clipboard Toggle word wrap

value は、JSON 値に変換できるオブジェクトです。詳細は、「 JSON 関数 」を参照してください。戻り値は JSON です。

null 値は結果に null リテラルとして含まれます。

名前が指定されておらず、式が列参照である場合は、exprN が使用されます。ここで、N は JSONARRAY 式の値の 1 ベースのインデックスです。

混合値の例

jsonObject('a"b' as val, 1, null as "null")
Copy to Clipboard Toggle word wrap

戻り値

{"val":"a\"b","expr2":1,"null":null}
Copy to Clipboard Toggle word wrap

テーブルでの JSONOBJECT の使用

SELECT JSONOBJECT(CustomerId, CustomerName)
FROM   Customer c
WHERE  c.CustomerID >= 88;
==========================================================
{"CustomerId":88, "CustomerName":"Wellington Importadora"}
{"CustomerId":89, "CustomerName":"White Clover Markets"}
Copy to Clipboard Toggle word wrap

別の例

SELECT JSONOBJECT(JSONOBJECT(CustomerId, CustomerName) as Customer)
FROM   Customer c
WHERE  c.CustomerID >= 88;
==========================================================
{"Customer":{"CustomerId":88, "CustomerName":"Wellington Importadora"}}
{"Customer":{"CustomerId":89, "CustomerName":"White Clover Markets"}}
Copy to Clipboard Toggle word wrap

別の例

SELECT JSONOBJECT(JSONARRAY(CustomerId, CustomerName) as Customer)
FROM   Customer c
WHERE  c.CustomerID >= 88;
==========================================================
{"Customer":[88, "Wellington Importadora"]}
{"Customer":[89, "White Clover Markets"]}
Copy to Clipboard Toggle word wrap

JSONPARSE

JSON 結果を検証し、返します。

JSONPARSE(value, wellformed)
Copy to Clipboard Toggle word wrap

は、適切な JSON バイナリーエンコーディング(UTF-8、UTF-16、または UTF-32)を持つ Blob です。適切にフォーマットされたものは、検証をスキップする必要があることを示すブール値です。戻り値は JSON です。

いずれかの入力の null は null を返します。

JSON 単純なリテラル値の解析

jsonParse('{"Customer":{"CustomerId":88, "CustomerName":"Wellington Importadora"}}', true)
Copy to Clipboard Toggle word wrap

JSONARRAY_AGG

null 値を含む Clob として JSON アレイの結果を作成します。これは JSONARRAY と似ていますが、その内容を単一のオブジェクトに集約します。

SELECT JSONARRAY_AGG(JSONOBJECT(CustomerId, CustomerName))
FROM   Customer c
WHERE  c.CustomerID >= 88;
==========================================================
[{"CustomerId":88, "CustomerName":"Wellington Importadora"}, {"CustomerId":89, "CustomerName":"White Clover Markets"}]
Copy to Clipboard Toggle word wrap

アレイを以下のようにラップすることもできます。

SELECT JSONOBJECT(JSONARRAY_AGG(JSONOBJECT(CustomerId as id, CustomerName as name)) as Customer)
FROM   Customer c
WHERE  c.CustomerID >= 88;
==========================================================
{"Customer":[{"id":89,"name":"Wellington Importadora"},{"id":100,"name":"White Clover Markets"}]}
Copy to Clipboard Toggle word wrap

JSON への変換

適切な JSON ドキュメントフォームに値を変換するのに、単純な仕様に準拠する変換が使用されます。

  • null 値は null リテラルとして含まれます。
  • JSON として解析された値、または JSON コンストラクト関数(JSONPARSE、JSONARRAY、JSONARRAY_AGG)から返される値は、JSON 結果に直接追加されます。
  • ブール値は true/false リテラルとして含まれます。
  • 数値はデフォルトの文字列変換として含まれます。数字または + インフィナリティーの結果が許可されていない場合は、無効な JSON を取得できる場合があります。
  • 文字列の値はエスケープまたは引用形式に含まれます。
  • バイナリーの値は暗黙的に JSON 値に変換可能で、JSON に含まれる前に特定の値を必要とします。
  • その他の値はすべて、適切なエスケープ/引用形式で文字列変換として含まれます。

JSONTOXML

JSON から XML ドキュメントを返します。

JSONTOXML(rootElementName, json)
Copy to Clipboard Toggle word wrap

rootElementName は文字列で、json は {clob, blob} にあります。戻り値は XML です。

適切な UTF エンコーディング(8、16LE)。16BE、32LE、32BE)が JSON Blob について検出されます。別のエンコーディングを使用する場合は、String 関数の TO_CHARS 関数 を参照してください。

結果は常に適切な形式の XML ドキュメントになります。

XML へのマッピングでは、以下のルールを使用します。

  • 現在の要素名は最初に rootElementName であり、JSON 構造が通過するのでオブジェクト値名になります。
  • すべての要素名は有効な XML 1.1 名である必要があります。無効な名前は、SQLXML 仕様に従って完全にエスケープされます。
  • 各オブジェクトまたはプリミティブ値は、現在の名前で要素で囲まれます。
  • 配列の値がルートでない限り、追加要素で囲まれません。
  • null 値は、xsi:nil="true" 属性を持つ空の要素によって表されます。
  • boolean および number の値要素では、属性 xsi:type はそれぞれ boolean と 10 進数に設定されます。

JSON:

jsonToXml('person', x)の XML へのサンプル

{"firstName" : "John" , "children" : [ "Randy", "Judy" ]}
Copy to Clipboard Toggle word wrap

XML:

jsonToXml('person', x)の XML へのサンプル

<?xml version="1.0" ?>
   <person>
      <firstName>John</firstName>
      <children>Randy</children>
      <children>Judy<children>
   </person>
Copy to Clipboard Toggle word wrap

JSON:

ルートアレイを使用した jsonToXml('person', x)の XML へのサンプル

[{"firstName" : "George" }, { "firstName" : "Jerry" }]
Copy to Clipboard Toggle word wrap

XML(より適切に形式の XML を維持するために、追加の "person" wrapping 要素がある点に注意してください)。

ルートアレイを使用した jsonToXml('person', x)の XML へのサンプル

<?xml version="1.0" ?>
<person>
  <person>
    <firstName>George</firstName>
  </person>
  <person>
    <firstName>Jerry</firstName>
  </person>
</person>
Copy to Clipboard Toggle word wrap

JSON:

無効な名前を持つ jsonToXml('root', x)の XML へのサンプル

{"/invalid" : "abc" }
Copy to Clipboard Toggle word wrap

XML:

無効な名前を持つ jsonToXml('root', x)の XML へのサンプル

<?xml version="1.0" ?>
<root>
  <_x002F_invalid>abc</_x002F_invalid>
</root>
Copy to Clipboard Toggle word wrap

注記

以前のリリース以前は、xXXXX ではなく uXXXX エスケープを使用しないと誤って使用していました。その動作に依存する必要がある場合は、org.teiid.useXMLxEscape システムプロパティーを参照してください。

JsonPath

JsonPath 式の処理は Jayway JsonPath によって提供されます。1 ベースのインデックスではなく、0 ベースのインデックスを使用することに注意してください。さまざまなパス式で想定された戻り値を熟知していることを確認してください。たとえば、行の JsonPath 式がアレイを提供することを想定している場合は、その配列が不要なパス式によって自動的に返されるアレイではなく、希望の配列であることを確認します。

パス名で '.' などの予約文字が使用される状況が発生した場合は、任意のキー($['.key'] など)を許可するため、括弧付きの JsonPath 表記を使用する必要があります。

詳細は、「 JSONTABLE 」を参照してください。

JSONPATHVALUE

単一の JSON 値を文字列として抽出します。

JSONPATHVALUE(value, path [, nullLeafOnMissing])
Copy to Clipboard Toggle word wrap

は clob JSON ドキュメントで、path は JsonPath 文字列で、nullLeafOnMissing はブール値です。戻り値は、結果となる JSON の文字列値です。

nullLeafOnMissing が false(デフォルト)の場合は、見つからないリーフに評価されるパスによって例外が発生します。nullLeafOnMissing が true の場合、null 値が返されます。

値が、indefinite パス式によって生成された配列である場合、最初の値のみが返されます。

jsonPathValue('{"key":"value"}' '$.missing', true)
Copy to Clipboard Toggle word wrap

戻り値

null
Copy to Clipboard Toggle word wrap
jsonPathValue('[{"key":"value1"}, {"key":"value2"}]' '$..key')
Copy to Clipboard Toggle word wrap

戻り値

value1
Copy to Clipboard Toggle word wrap

JSONQUERY

JSON ドキュメントに対して JsonPath 式を評価し、JSON 結果を返します。

JSONQUERY(value, path [, nullLeafOnMissing])
Copy to Clipboard Toggle word wrap

は clob JSON ドキュメントで、path は JsonPath 文字列で、nullLeafOnMissing はブール値です。戻り値は JSON 値です。

nullLeafOnMissing が false(デフォルト)の場合は、見つからないリーフに評価されるパスによって例外が発生します。nullLeafOnMissing が true の場合、null 値が返されます。

jsonPathValue('[{"key":"value1"}, {"key":"value2"}]' '$..key')
Copy to Clipboard Toggle word wrap

戻り値

["value1","value2"]
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat