【FileMaker】JSONの配列を書く

何度もサンプル書くのも面倒になってきたので、一度アウトプットしておきます。

# 配列書くのがめんどくさい
FileMakerのバージョンが16以降から[JSON扱える](https://help.claris.com/ja/pro-help/content/json-functions.html)のはとても便利になって幸せだな〜って思うのですが、配列を描くのがめんどくさくてですね。

# JSONArrayとは何だ？必ず使わないといけないのか？
めんどくさいというか、JSONArrayを使えばいいのか、単に配列の「[0]」とか「[1]」でセットすればいいのかがいまいちわかってなかったというのが本当のところです。

# 結論
JSONArrayで書く配列と単に配列の「[0]」とか「[1]」でセットするやり方は同じ結果。
です。
ただ、どういうふうに書けばいいのか、JSONArrayに関しては[ヘルプ](https://help.claris.com/ja/pro-help/content/json-functions.html)などであまりサンプルが出ていなくて、「どう書くんじゃ！？」と思ったので、こちらでまとめようと思ったのです。

# 配列の書き方

## JSONArrayを使った書き方
まずは、先にJSONArrayを使って書いた変数の内容をカスタムダイアログで表示してみます。
![スクリーンショット 2022-08-03 17.43.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/ff74d7d9-f556-3d34-90be-d738952bf238.png)
今回配列で取り扱うのは、"query"部分と"sort"部分です。

これを、JSONArrayを使って書くと、以下のようになります。
![スクリーンショット 2022-08-03 17.41.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/b6c0e37c-af50-667b-e4ee-7b71175056e0.png)
配列を示す"["と"]"の中で、バックスラッシュでダブルクォーテーションを指定して、配列の中のデータ構造を作成している感じです。
バックスラッシュを使っていることで、ちょっと可読性が落ちているように感じます。（当社比）

## JSONArrayを使わない書き方
JSONArrayを使わずに書いた変数の内容をカスタムダイアログでこちらも表示してみます。
![スクリーンショット 2022-08-03 17.43.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/c21bca11-7a13-6914-1a90-d9acab16dfbe.png)
先ほどと同じ表示内容になります。

では、これはどのように書いているかというと、
![スクリーンショット 2022-08-03 17.42.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/8617097f-aebd-a923-5d37-9af8a87b1cb3.png)
それぞれの配列にセットする配列データを組み立て、JSONObjectで設定しています。
こちらの方が可読性が高いと思うのですが、皆さんはどちらで配列データを実装していましたか？

# もう一つのJSON配列の書き方
こちらは、おまけになります。
単なる配列データのJSONを作りたいんです、という時です。
どういうことかというと、こういう配列です。
![スクリーンショット 2022-08-03 17.57.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/b9239644-5d92-195e-4782-b1eabd45677d.png)
keyがなく、valueのみの配列JSONです。

JSONを組み立てるときは、keyにあたる部分に配列を直接指定します。
![スクリーンショット 2022-08-03 17.59.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/6fc461ab-226c-b89a-d7fa-7eaf4a018fc6.png)
ただ、ちょっと面倒だなと思うところは、配列の"["と"]"をダブルクォーテーションで囲むところです。
そこをクリアしてしまえば、あとは単純にvalueを指定するだけなので、JSONArrayのバックスラッシュよりはめんどくささが一段低くなるような気がします。（当社比）

実際に構築したJSONデータから、最初のデータを取り出してみましょう。
[JSONGetElement関数](https://help.claris.com/ja/pro-help/content/jsongetelement.html)で、キーに当たる部分にこちらも配列を直接指定します。
![スクリーンショット 2022-08-03 18.04.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/2eb3a3ac-f664-e62d-f324-a3f412eac4ed.png)

取得できましたね。
![スクリーンショット 2022-08-03 17.57.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/8a087df4-49ca-a274-b063-d2fc93576a2d.png)

では、次は、この配列が何個あるかを確認してみます。
この場合は、２つの関数で構成しています。
[JSONListKeys関数](https://help.claris.com/ja/pro-help/content/jsonlistkeys.html)でキーを抽出し、その個数を[ValueCount関数](https://help.claris.com/ja/pro-help/content/valuecount.html)でカウントします。
ValueCountは改行区切りの値一覧のようなデータ構造でよく利用する関数ですが、JSON配列の個数を確認するときも利用できます。
![スクリーンショット 2022-08-03 18.04.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/dbca516f-3603-fdea-60d6-b934766dd156.png)

表示して確認してみましょう。
![スクリーンショット 2022-08-03 17.57.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/60538/778076f3-75b7-f452-ce02-a1804e1f86b9.png)
確かに配列３個が確認できましたね。

JSONで取り扱う配列構造について、モヤッとしていたので、まとめてみました。