データ型の話
データには型 (タイプ) があります。
Excelでも、文字列、数値、日付などのデータの種類があると思いますが、JSONでも扱えるデータの型とルールがあります。
今回はJSONで扱うデータの種類とルールについて説明します。
1. 文字列
Hello world.今日は8/1日
のような文字の並びです。
JSONでは文字列を扱う際にダブルクォーテーション" "で括るというルールがあります。
最初のサンプルを思い出すと、
{ "名前": "慈衛 孫", "年齢": 19, "住所": "東京都港区港南 2-16-3" }
この中で、識別子=名前 の右側(値)が文字列になっています ("慈英 孫")。
前回の投稿で紹介したルール「ルール2. キー/識別子 は ダブルクォーテーションで囲む」 で少し触れましたが、JSONの値部分でダブルクォーテーションで囲まれている場合、それはその値が文字列というデータ型であることを表しています。
2.数値
2つ目が数値型 (実数) です。数値を扱う時は文字列とは異なり、ダブルクォーテーションでは囲みません。(剥き身)
例えば 19
と書いたとき、それが文字列(1と9) なのか 数値型 (19) なのかを区別する必要があります。
JSONではこの区別をダブルクォーテーションで囲まれているか剥き身か で判断します。
Power Automateも含めて、文字列と数値はできる操作が異なるので、適切なデータ型を指定するようにしましょう。
3. ブール値
trueまたはfalseであらわされる、Yes/Noと同じように対をなすデータ型です。
例えば成人かどうかの情報を表すのに、{"成人": true}
(成人済み) のようなデータで記述できます。
ブール値も文字列とは区別して剥き身で書きます。
4. オブジェクト
オブジェクトはこれまで暗黙的に前提としてきたような、キー/識別子と値の組み合わせからなるデータです。
{"名前":"慈英 孫"}
これがオブジェクトです。
少し発展的ですが、JSONの中で値としてオブジェクト型を利用する場合にはオブジェクトが入れ子になります。
{ "名前": {"氏名":"慈英 孫", "カナ":"ジエイ ソン"} }
前回のサンプルと見比べると、識別子=名前 の 値は、{"氏名":"慈英 孫", "カナ":"ジエイ ソン"}
というオブジェクトとわかります。
今回もExcel表で表すと以下のような感じです。ちょうど図の左側、Excel表で赤枠の部分が入れ子になったオブジェクトに対応しています。
このように、Excel表で列が階層になっているようなデータを表すときに、JSONではオブジェクトが入れ子になります。
5.配列
配列は複数のデータを扱う入れ物です。JSONのルールでは配列は大カッコ [ ] で括ります。
配列のそれぞれの箱には、これまで書いてきた型のデータを含めることができ、例えば文字列の配列であれば
[ "やまだ花子" , "やまだ太郎", "やまだ小次郎" ]
数値の配列であれば
[32, 35, 8]
のように書くことができます。
JSONの中で値として配列を使うときには他のデータ型と同様に
{ "家族" : [ "やまだ花子" , "やまだ太郎", "やまだ小次郎" ] }
と書けます。
配列の中にはオブジェクトを含めることもできます。これがちょうどExcelの表/テーブルのような表現です。
6. null
最後はすこし特殊な null値です。
null値と言いながら、値がないこと を表します。すべて小文字、剥き身で
{ "名前" : null }
のように表します。
以上がデータ型の話です。
発展的なJSONの例
これらを踏まえて少し発展的なJSONのサンプルを見てみましょう。
{ "本人情報": { "氏名": "慈英 孫", "カナ": "ジエイ ソン" }, "年齢": 35, "家族構成": [ { "氏名": "慈英 妻", "続柄": "妻" }, { "氏名": "慈英 子", "続柄": "子" } ] }
これを見たときにどのようなデータなのかをイメージできると、他のJSONを見たときもデータの構造を理解しやすいのではと思います。 これまでのようにExcel表で書いてみると下図のようになります。
どうでしょう?難しそうに見えるJSONでも、自分のよく知っている対応物でイメージできれば、それほど難しくなかったりしませんか?
まとめ
ここではJSONで扱うデータ型について解説しました。
- 文字列
- 数値
- ブール値
- オブジェクト
- 配列
- null
JSONはテキストでデータを表すためにそれぞれのデータ型に固有のルールがあることを覚えておきましょう。※たいていは文字列で "..." をつけるか、剥き身かです。配列は[....] でくくる。
Power Automateでも、それぞれを意識しておくと関数やアクションでデータ型に由来するエラーが出にくくなります。