JSONSetElement

オブジェクト名、配列索引、またはパスで指定された JSON データ内の要素を追加または変更します。

構文 

JSONSetElement (json ; キーまたは索引またはパス ; 値 ; タイプ)

引数 

json - JSON オブジェクトまたは配列を含むテキスト式またはフィールド

キーまたは索引またはパス - JSON オブジェクト名 (キー)、配列索引、またはパスを指定する任意のテキスト式またはフィールド。JSON 関数の使い方を参照してください。

値 - 数値、テキスト、または JSON データを含む任意の式またはフィールド

タイプ - 設定するデータのタイプを指定する数値 (下記参照)

戻り値のデータタイプ 

テキスト

起点バージョン 

16.0

説明 

この関数は指定されたキーまたは索引またはパスの位置に値を設定した json を返します。json 引数が空白 ("") である場合は、キーまたは索引またはパス引数の最初の部分が "[" 文字ではじまっていない限り、値を JSON オブジェクトに追加します (中カッコ { } で囲む)。引数の最初の部分が "[" 文字ではじまっている場合は、値を JSON 配列に追加します (角カッコ [ ] で囲む)。

タイプ引数の場合は次のいずれかの値を使用します。json に値を追加する場合、タイプ引数で値を特定の JSON タイプに変換するか、タイプを変更せずに値を挿入するかを指定します。

タイプ引数1

値引数の入力タイプ

出力タイプ

JSONString (1)

FileMaker テキスト

JSON 文字列 (" ")

JSONNumber (2)

FileMaker 数字

JSON 数字

JSONObject (3)

JSON オブジェクト

JSON オブジェクト ({ })

JSONArray (4)

JSON 配列

JSON 配列 ({ })

JSONBoolean (5)

FileMaker 値または JSON 論理値

JSON 論理値

JSONNull (6)

タイプは無視

JSON Null

JSONRaw (0)

JSON 要素

JSON 要素 (値が有効な JSON ではない場合は JSON 文字列)

  1. 名前付きの定数またはカッコ内の数値のいずれかを使用してタイプを指定できます (引用符なしの「JSONString」や「1」など)。

JSONBoolean では、値が true または 0 以外の数字の場合は真として扱われ、値が false または 0 の場合は偽として扱われます。それ以外の場合は、If 関数のテキスト引数と同じ方法で値が true か false かが決定されます。

JSONRaw では、JSON パーサによって値が処理されて有効な JSON 構文を使用しているかどうかを判定します。値が有効な JSON である場合、要素は JSON データタイプに変換されず、解析された結果がこの関数の戻り値で使用されます。値の中で最初の JSON 要素の後にある文字は無視されます。たとえば、値が「4,2」の場合、JSON 構文では、コンマは要素のセパレータであるため、「4」のみが挿入されます。値が有効な JSON ではない場合、戻り値で JSON 文字列に変換されます。

キーまたは索引またはパス、値、およびタイプ引数のセットを要素ごとに角カッコ [ ] で囲んで追加することで複数の要素を設定できます。次の構文で N 個の要素を一度に設定します:

コピー
JSONSetElement ( json ; 
   [キーまたは索引またはパス1 ; 値1 ; タイプ1 ] ; 
   [キーまたは索引またはパス2 ; 値2 ; タイプ2 ] ; 
   ...
   [キーまたは索引またはパスN ; 値N ; タイプN ]
)

例 1 

キーとその値を JSON オブジェクトのルートに追加します。

JSONSetElement ("{\"a\" : 11}" ; "b" ; 22.23 ; JSONNumber) は「{"a":11,"b":22.23}」を返します。

例 2 

配列を作成、"[+]" 構文を使用して 1 つの要素 (JSON オブジェクト) を追加、次に "[:]" 構文を使用してその要素を配列の最後の要素として参照してオブジェクトに別のキーと値のペアを追加します。

コピー
JSONSetElement("[]"; 
    ["[+].a", 5, JSONNumber] ; 
    ["[:].b", 6, JSONNumber]
)

は [{"a":5,"b":6}] を返します。

例 3 

JSON オブジェクトを別の JSON オブジェクトの要素として追加します。$$JSON 変数に

コピー
{
    "a" : {
        "id" : 12,
        "lnk" : 34
    }
}

が設定されている場合は

コピー
JSONFormatElements (
   JSONSetElement ($$JSON ; "b" ; "{\"id\" : 14, \"lnk\" : 73} " ; 
      JSONObject 
   )
)

は次を返します。

コピー
{
    "a" : 
    {
        "id" : 12,
        "lnk" : 34
    },
    "b" : 
    {
        "id" : 14,
        "lnk" : 73
    }
}

例 4 

$$JSON 変数に保存された JSON データの例から配列の 1 番目の「製品」要素の「特売」と「在庫」キーの値を変更します。

コピー
JSONFormatElements ( 
   JSONSetElement ( $$JSON ; 
   ["ベーカリー.製品[0].特売" ; 0 ; JSONBoolean] ; 
   ["ベーカリー.製品[0].在庫" ; 0 ; JSONNumber] 
   )
)

は $$JSON と同じデータを返しますが、「製品」配列の最初の要素を次に変更します。

コピー
{
    "カテゴリ" : "パン",
    "id" : "FB1",
    "名前" : "ドーナツ",
    "価格" : 1.99,
    "特売" : false,
    "在庫" : 0
}