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 を返します。 |