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で作成してみました。

よろしければダウンロードして試してみて下さい。

サンプルファイルのダウンロードはこちら→