# AdaloにおけるJSON入門ガイド

JSONは、**JavaScript Object Notation**の略称です。これは、アプリ同士が通信できるように情報を構造化するシンプルな方法です。Adaloでは、**カスタムアクション**を操作したりAPIに接続したりする際、よくJSONを目にすることになります。

JSONを、**ラベルの付いた箱の集合**だと考えてみてください。各箱には**ラベル**（キー）と、**その中にあるもの**（値）があります。キー＝ラベル、値＝データであることを理解すれば、Adaloのカスタムアクションや外部コレクションを自信を持って活用できるようにになるでしょう。

***

### 基本情報

JSONオブジェクトは常に以下の特徴を持ちます。

* `{` で始まり、`}` で終わる
* 1つ以上の**キーと値のペア**を含む
* キーと値のペアはコンマで区切られている

例：

```json
{
  "name": "Taylor",
  "age": 28,
  "member": true
}
```

* `"name"` がキー → `"Taylor"` が値
* `"age"` がキー → `28` が値
* `"member"` がキー → `true` が値

***

### 一般的な値の型

* **テキスト（文字列）：**`"Hello World"`（必ず二重引用符で囲む）
* **数値：**`42`（引用符なし）
* **真偽値（ブール値）：**`true` または `false`（引用符なし）
* **配列（リスト）：**`[ "item1", "item2", "item3" ]`
* **オブジェクト（別のボックス）：**

  ```json
  {
    "address": {
      "street": "123 Main St",
      "city": "Salt Lake City"
    }
  }
  ```

***

### カスタムアクションにおけるJSON

カスタムアクションが実行されると、**APIからの応答**はJSON形式で返されます。Adaloがそのデータを認識し、**出力**として利用できるようにするには、JSONは以下の条件を満たす必要があります。

1. 適切な形式（有効なJSON）であること
2. シンプルなキー名を使用すること（スペースを含まず、アンダースコアを使用すること）

**APIからの応答例：**

```json
{
  "image_url": "https://example.com/photo.jpg",
  "status": "ok"
}
```

Adaloでは、次のように設定します。

* `image_url`（テキスト）という名前の出力を作成する
* `status`（テキスト）という名前の出力を作成する
* その後、レコードの更新や入力の変更といった後続のアクションで、この出力を利用することができます。

### 外部コレクションでのJSONの使用

**外部コレクション**（Adalo内のデータベースなど、使用したいAPI）に接続する場合、AdaloはJSONを通じてどのレコードが存在するかを認識します。

* JSON レスポンス内の各オブジェクトは、**レコード（行）**&#x3068;して扱われます。
* そのオブジェクト内の各キー/値は、**プロパティ（フィールド）**&#x3068;なります。

**例：**

```json
[
  {
    "id": 1,
    "title": "First Post",
    "author": "Taylor"
  },
  {
    "id": 2,
    "title": "Second Post",
    "author": "Sam"
  }
]
```

Adaloでは次のようになります。

* これは 「Posts」 という コレクションになります。
* プロパティ：`id`、`title`、`author`
* レコード：合計2件（First Post、Second Post）

***

### 配列には一意のIDが必要

APIが**配列**（リスト`[ … ]`）を返す場合、その中の各オブジェクトには一意の識別子（通常は`id`と呼ばれます）が必要です。

一意のIDが含まれていない場合：

* Adaloは各オブジェクトを区別できなくなります。
* リストの最初の項目だけが複数回表示されるか、あるいはAdaloがそれらをまったく表示できなくなる可能性があります。

**Good（Adaloで動作する）：**

```json
[
  { "id": 1, "name": "Apple" },
  { "id": 2, "name": "Banana" }
]
```

**Bad（Adaloではこれらをリスト表示できない）：**

```json
[
  { "name": "Apple" },
  { "name": "Banana" }
]
```

***

### 簡単な検証のコツ

JSONが正しいか確信が持てない場合は、[**https://jsonlint.com**](https://jsonlint.comhttps/jsonlint.com/) などの無料のバリデータに貼り付けてみてください。有効と表示されれば、通常はAdaloでも読み込むことができます。
