FileMaker 16 の新機能 「JSON関数」
2017年05月18日 03:30 PM
FileMaker 16以前
FileMaker 16の新機能には、待ちに待った「JSON関数」が追加されました。
■「JSON」って?
「JSON」という言葉は、最近良く聞きます。
「JSON(ジェイソン、JAVASCRIPT OBJECT NOTATION)」は、
データ構造を表すデータ記述言語です。JAVASCRIPTと書いてありますが、
書式がJAVASCRIPTに従ったものになっているだけで、今では、
様々なプログラミング言語がJSONの読み書きに対応しています。
FileMakerでは、今回リリースされたV16から、JSON関数が追加されました。
JSONで記述されたデータから必要なデータをパース(解析)することが容易になりました。
実際の例をみてみましょう。
{
"書籍名" : "JSONの使い方",
"目次" :
[
{
"第1章" : "JSONって?",
"第2章" : "JSONをパースする"
}
],
"著者" : "家州太郎"
}
上記のような、JSONで書かれたデータ構造があります。
データ構造を表現するという意味では、XMLと似ています。
<書籍名>JSONの使い方</書籍名>
<目次>
<第1章>JSONって?</第1章>
<第2章>JSONをパースする</第2章>
</目次>
<書籍名>家州太郎</書籍名>
同じようですが、データにタグを付けることでデータ構造を表現するXMLとは、違ってJSONでは階層に並べることで、構造を表現します。
XMLでは、全ての情報にタグを付けるため、データサイズが大きくなりがちですが、JSONは、括弧で囲んで、データ構造を表すので、データサイズは小さくなります。
■追加された「JSON関数」
今回追加されたJSON用の関数は6つあります。
関数 |
説明 |
JSONDeleteElement |
オブジェクト名、配列索引、またはパスで指定されたJSONデータ要素を削除します。 |
JSONFormatElements |
JSONデータ内の要素を読みやすい形に書式設定します。 |
JSONGetElement |
JSONデータで、オブジェクト名、配列索引、またはパスで指定された要素のクエリーを実行します。 |
JSONListKeys |
オブジェクト名、配列索引、またはパスで指定された要素に対するJSONデータ内のオブジェクト名(キー)または配列索引の一覧を表示します。 |
JSONListValues |
オブジェクト名、配列索引、またはパスで指定された要素に対するJSONデータ内の値の一覧を表示します。 |
JSONSetElement |
オブジェクト名、配列索引、またはパスで指定されたJSONデータ内の要素を追加または変更します。 |
JSONGetElement関数
構文: JSONGetElement( json ; キーまたは索引またはパス )
こちらの関数は、使用頻度が高くなる関数ですので、まず、この関数から例を出してみます。
先ほどのJSONデータを例にしてみましょう。
{
"書籍名" : "JSONの使い方",
"目次" :
[
{
"第1章" : "JSONって?",
"第2章" : "JSONをパースする"
}
],
"著者" : "家州太郎"
}
「JSONデータで、オブジェクト名、配列索引、またはパスで指定された要素のクエリーを実行します。」という説明の通り、JSONから、値を取り出すことが出来ます。
式 :JSONGetElement ( JSON ; "書籍名" )
結果 :JSONの使い方
式 :JSONGetElement ( JSON ; "著者" )
結果 :家州太郎
式 :JSONGetElement ( JSON ; "目次" )
結果 :[{"第1章":"JSONって?","第2章":"JSONをパースする"}]
式 :JSONGetElement ( JSON ; "目次[0]" )
結果 :{"第1章":"JSONって?","第2章":"JSONをパースする"}
式 :JSONGetElement ( JSON ; "目次[0].第1章" )
結果 :JSONって?
関数の引数の書き方に慣れが必要ですね。
JSONSetElement関数
構文: JSONSetElement( json ; キーまたは索引またはパス ; 値 ; タイプ )
こちらの関数は先ほどのJSONGetの対となる関数ですね。
JSONデータを作成出来ます。例えば、さきほどのJSONデータは、このように書くと作成出来ます。
式 :
JSONSetElement ( "" ;
["書籍名" ; "JSONの使い方" ; JSONString];
["著者" ; "家州太郎" ; JSONString];
["目次[0].第1章" ; "JSONって?" ; JSONString];
["目次[0].第2章" ; "JSONをパースする" ; JSONString]
)
結果 :
{"書籍名":"JSONの使い方","目次":[{"第1章":"JSONって?","第2章":"JSONをパースする"}],"著者":"家州太郎"}
JSONFormatElements関数
構文: JSONFormatElements( json )
こちらの関数はJSONデータ内の要素を読みやすい形に書式設定します。
$JSON =
{"書籍名":"JSONの使い方","目次":[{"第1章":"JSONって?","第2章":"JSONをパースする"}],"著者":"家州太郎"}
式 :
JSONFormatElements ( $JSON )
結果 :
{
"書籍名" : "JSONの使い方",
"目次" :
[
{
"第1章" : "JSONって?",
"第2章" : "JSONをパースする"
}
],
"著者" : "家州太郎"
}
JSONListKeys関数
構文: JSONListKeys( json ; キーまたは索引またはパス )
こちらの関数はJSONデータ内のオブジェクト名(キー)または配列索引の一覧を表示します。
$JSON =
{
"書籍名" : "JSONの使い方",
"目次" :
[
{
"第1章" : "JSONって?",
"第2章" : "JSONをパースする"
}
],
"著者" : "家州太郎"
}
式 :
JSONListKeys ( JSON関数::JSON ; "" )
結果 :
書籍名
目次
著者
式 :
JSONListKeys ( JSON関数::JSON ; "目次[0]" )
結果 :
第1章
第2章
JSONListValues関数
構文: JSONListValues( json ; キーまたは索引またはパス )
こちらの関数はJSONデータ内の値の一覧を表示します。
$JSON =
{
"書籍名" : "JSONの使い方",
"目次" :
[
{
"第1章" : "JSONって?",
"第2章" : "JSONをパースする"
}
],
"著者" : "家州太郎"
}
式 :
JSONListValues ( JSON関数::JSON ; "" )
結果 :
JSONの使い方
[{"第1章":"JSONって?","第2章":"JSONをパースする"}]
家州太郎
式 :
JSONListValues ( JSON関数::JSON ; "目次[0]" )
結果 :
JSONって?
JSONをパースする
JSONDeleteElement関数
構文:JSONDeleteElement ( json ; キーまたは索引またはパス )
こちらの関数はJSONデータ要素を削除します。
$JSON =
{"書籍名":"JSONの使い方","目次":[{"第1章":"JSONって?","第2章":"JSONをパースする"}],"著者":"家州太郎"}
式 :
JSONDeleteElement ( JSON関数::JSON ; "著者" )
結果 :
{"書籍名":"JSONの使い方","目次":[{"第1章":"JSONって?","第2章":"JSONをパースする"}]}
■利用ケース
これらの関数を使用すると、WebAPIの利用や、他システムとの連携がとてもしやすくなります。
下記のようなケースは、イメージし易いですね。
- 郵便番号から住所情報をWebAPIから取得
- 銀行コードや支店コードのWebAPIから取得
銀行情報WebAPIのサンプルをFileMakerで作成してみました。
よろしければダウンロードして試してみて下さい。
サンプルファイルのダウンロードはこちら→