JSON 関数

次の関数は、ロボットで使用される JSON 型に関連付けられています。

変換関数

変換関数は、さまざまな型を JSON に変換したり、その逆の変換を行ったりします。JSON 値が対応するターゲット タイプと一致しない場合、ロボットは ConversionIssue 例外をスローします。

名前

説明

json: T -> JSON

他の型の値を JSON に変換します。

これは、パスワードを除くすべての型で機能します。

5.json() は JSON 値を 5 と評価します。

json: Record -> JSON

レコード値を JSON オブジェクトに変換します。

バイナリ フィールドは base64 でエンコードされ、パスワードはハッシュ コード値になります ([状態] ペインにも同じ値が表示されます)。

myRecord.json()

json: (Record, Boolean) -> JSON

レコード値を JSON オブジェクトに変換します。ブール値が false の場合、バイナリ フィールドは省略されます。

myRecord.json(false)

text: JSON -> Text

JSON 文字列値をテキスト値に変換します。

"hello".json().text() は、テキスト値 "hello" と評価されます。

integer: JSON -> Integer

JSON 整数値を整数値に変換します。

5.json().integer() は 5 と評価されます

number: JSON -> Number

JSON 数値を Number 値に変換します。

5.1.json().number()5.1 と評価されます

boolean: JSON -> Boolean

JSON ブール値をブール値に変換します。

true.json().boolean()true と評価されます

テスト関数

テスト関数は JSON 値の型をテストします。また、オブジェクト値に特定のキーがある場合にもテストを行います。

名前

説明

isString: JSON -> Boolean

JSON 値が文字列の場合は true を返します。

"hello".json().isString()true と評価され、 5.json().isString()false と評価されます

isNumber: JSON -> Boolean

JSON 値が数値の場合は true を返します。

5.1.json().isNumber()true と評価されます

isWhole: JSON -> Boolean

JSON 値が数値であり、かつ整数でもある場合は true を返します。

5.json().isWhole()true と評価されます

isBoolean: JSON -> Boolean

JSON 値がブール値の場合は true を返します。

false.json().isBoolean()true と評価されます

isObject: JSON -> Boolean

JSON 値がオブジェクトの場合は true を返します。

{}.isObject()true と評価されます

isArray: JSON -> Boolean

JSON 値が配列の場合は true を返します。

[].isArray()true と評価されます

isNull: JSON -> Boolean

JSON 値が null の場合は true を返します。

null.isNull()true と評価されます

hasKey: (JSON, Text) -> Boolean

JSON 値が指定されたキーを持つオブジェクトである場合は true を返します。

{"a": 5}.hasKey("a")true と評価されます

Parse 関数と Stringify 関数

Parse 関数と Stringify 関数は、JSON のテキスト表現を JSON 値に変換したり、その逆の変換を行ったりします。

名前

説明

parse: Text -> JSON

テキストを JSON 値に解析します。

この関数は関数 json とは異なります。例: "null".json() はテキスト値 "null" を返しますが、"null".parse() は JSON 値 null を返します。

"[2, true, {}]".parse() は、数値 2、ブール値 true、および空のオブジェクト {} で構成される JSON 配列と評価されます

stringify: JSON -> Text

Stringify は Parse の逆関数です。JSON を表すテキストを返します。

[2, true, {}].stringify() はテキスト "[2, true, {}]" と評価されます

オブジェクト関数

オブジェクト関数は、キーを追加または削除することでオブジェクトの値を変更します。

名前

説明

put: (JSON, Text, T) -> JSON

新しいキー/値のペアを追加するか、既存のキー/値のペアをオーバーライドして、新しい JSON オブジェクトを作成します。これは不変の操作であるため、元のオブジェクトの値は変更されません。

{"a": 5, "b": true}.put("a", 7){"a": 7,"b": true} と評価されます

remove: (JSON, Text) -> JSON

JSON 配列からキー/値のペアを削除します。

{"a": 5, "b": true}.remove("a"){"b": true} と評価されます

keys: JSON -> JSON

JSON オブジェクトのキーで構成される JSON 配列を返します。

{"a": 5,"b": true}.keys()["a", "b"] と評価されます

配列関数

配列関数は、配列を変更したり、配列に関する質問をしたりします。

名前

説明

remove: (JSON, Integer) -> JSON

JSON 配列から要素を削除します。

[true, 2, null].remove(1)[true, null] と評価されます

add: (JSON, T) -> JSON

JSON 配列の末尾に要素を追加します。

[true, 2].add(null)[true, 2, null] と評価されます

add: (JSON, Integer, T) -> JSON

指定されたインデックスの要素を JSON 配列に追加します。

[true, 2].add(0, null)[null, true, 2] と評価されます

length: JSON -> Integer

JSON 配列の長さを返します。

[true, 2, null].length()3 と評価されます

isEmpty: JSON -> Boolean

JSON 配列が空である場合は true を返します。

[],isEmpty()true と評価されます

nonEmpty: JSON -> Boolean

JSON 配列が空でない場合は false を返します。

[true, 2, null].nonEmpty()true を返します

sort: (JSON (array), Boolean (optional)) -> JSON (array)

数値または文字列の配列を並び替えます。

並べ替え順序を選択するには、次のようにオプションのブール引数を指定します: true は昇順 (デフォルト)、false は降順です。

[1, 3, 2, 6, 5].sort()[1, 2, 3, 5, 6] と評価されます

[1, 3, 2, 6, 5].sort(false)[6, 5, 3, 2, 1] と評価されます

sort: (JSON (array), Text, Boolean (optional)) -> JSON (array)

指定されたキーの値に基づいてオブジェクトの配列を並び替えます。テキスト引数は並べ替えのキーとなります。

並べ替え順序を選択するには、次のようにオプションのブール引数を指定します: true は昇順 (デフォルト)、false は降順です。

[{"a": 0, "b": true},{"a": 2, "c": null},{"a": 1, "b": false}].sort("a")[{"a": 0, "b": true},{"a": 1, "b": false},{"a": 2, "c": null}] と評価されます

subsequence: (JSON (array), Integer) -> JSON (array)

指定されたインデックスの要素で構成される新しい JSON 配列を返します。

[1, 2, 3, 4, 5].subsequence(2)[3, 4, 5] と評価されます

subsequence: (JSON (array), Integer, Integer) -> JSON (array)

最初のインデックスから 2 番目のインデックスまでの要素 (ただし 2 番目のインデックスは含まない) で構成される新しい JSON 配列を返します。

[1, 2, 3, 4, 5].subsequence(1, 3)[2,3] と評価されます

distinct: JSON (array) -> JSON (array)

重複を削除し、異なる値を持つ新しい JSON 配列を返します。

[1, 4, 2, 3, 1, 4, 4].distinct()[1, 4, 2, 3] と評価されます

reverse: JSON (array) -> JSON (array)

要素を逆の順序に並べ替えた JSON 配列を返します。

[1, 3, 4, 2].reverse()[2, 4, 3, 1] と評価されます

配列作成関数

配列作成関数は配列を動的に作成します。

range または fill 関数によって生成される配列のサイズは、2147483647 要素に制限されます。ただし、値が制限を超えていなくてもサイズが大きい場合は、ロボットのメモリが不足する可能性があります。

名前

説明

range: (Integer, Integer, Integer) -> JSON (array)

range(start, stop, step) は、整数のシーケンスの JSON 配列を返します。ストップ値が含まれます。

range(0, 10, 2)[0, 2, 4, 6, 8, 10] と評価されます

range: (Integer, Integer) -> JSON (array)

range(start, stop) は、整数のシーケンスの JSON 配列を返します。ステップ値はデフォルトで 1 です。ストップ値が含まれます。

range(5, 10)[5, 6, 7, 8, 9, 10] と評価されます

range: (Integer) -> JSON (array)

range(stop) は、整数のシーケンスの JSON 配列を返します。開始値は 0 です。ステップ値は 1 です。ストップ値が含まれます。

range(5)[0, 1, 2, 3, 4, 5] と評価されます

fill: (Integer, T) -> JSON (array)

指定された回数の指定の値を含む JSON 配列を返します。

fill(5, 1)[1, 1, 1, 1, 1] と評価されます

パス関数

パスを使用します (パスは、JSON 値内のパスに対応するテキスト値です)。例: ".a[5].b"

名前

説明

updateAtPath: (JSON, Text, JSON) -> JSON

指定されたパス (2 番目の引数) の最初の JSON 値を値 (3 番目の引数) で更新します。2 番目の引数は JSON テキストにすることもできます。

{"a":[1]}.updateAtPath(".a[0]", null){"a": と評価されます[null]}

lookupPath: (JSON, Text) -> JSON

指定された JSON パス (2 番目の引数) の JSON の値を返します。

{"a": [1]}.lookupPath(".a[0]")1 と評価されます

containsPath: (JSON, Text) -> Boolean

指定された JSON パスが JSON 値内の場所と一致した場合は true を返し、一致しなかった場合は false を返します。

{"a": [1]}.containsPath(".a[0]")true と評価されます

{"a": [1]}.containsPath(".b")false を返します。