JSONの構造と構文

JSONの構造と構文の概要

JSONは、APIで最も広く使用されているデータ形式です。多くのAPIリクエストは、JSONレスポンスボディで情報を返します。

752

APIテストエディターでのJSONレスポンスボディ

このガイドでは、JSONレスポンスボディの構造と、JSONパスを記述する構文の概要について説明します。これらはどちらも、APIテストエディターで JSONパスをプレビューする際に役立ちます。

JSONレスポンスボディの構造

JSONレスポンスボディは、オブジェクトと配列で構成されます。

JSONオブジェクト

JSONオブジェクトにはキーと値のペアで表現される1つ以上のプロパティが含まれており、プロパティ同士はコンマで区切られ、中括弧 { } で囲まれています。

たとえば、ユーザーを認証するAPIコールは、ユーザーがログインしたことを示すために、以下のようなレスポンスボディを返す可能性があります。

{
  "authenticated": true
}

このJSONレスポンスには、キーが "authenticated"、値がtrueのプロパティ1つだけが含まれています。

オブジェクトはネストすることも可能です。この例では、APIから以下のようなユーザー詳細情報が返されます。

{
  "data": {
    "id": 7,
    "email": "[email protected]",
    "first_name": "John",
    "last_name": "Smith",
    "image": "https://example.com/7/image.jpg"
  }
}

キー "data" はその値としてオブジェクトを持ち、そのオブジェクトは "id""email""first_name""last_name""image" という5つのプロパティを持っています。これはネストしているオブジェクトです。

JSONの配列

JSONレスポンスボディには、配列を含めることもできます。配列は項目のリストであり、項目同士はコンマで区切られ、角括弧 [ ] で囲まれています。以下は、その例です。

["apples", "bananas", "oranges", "grapes"]

オブジェクトには、値として配列を含めることもできます。この例では、キー "data" の値は、ジャンルの名前の配列です。

{
  "statusCode": 200,
  "message": "Genres",
  "data": [
    "comedy",
    "horror",
    "noir",
    "action",
    "drama",
    "rom-com",
    "art house"
  ]
}

JSONレスポンスボディには、オブジェクトの配列 (つまりオブジェクトのリスト) を含めることもできます。この例の "records" の値はオブジェクトの配列であり、データベース内の3人のユーザーを表しています。

{
  "records": [
    {
      "id": "rec25eKmUsfiieG2B",
      "createdTime": "2021-05-21T20:17:43.000Z",
      "username": "Jonny W"
    },
    {
      "id": "rec2dLF92AG8JTL0S",
      "createdTime": "2021-03-20T18:02:38.000Z",
      "username": "Debbie"
    },
    {
      "id": "rec5w5lUPzN8Yd3um",
      "createdTime": "2021-03-20T20:41:51.000Z",
      "username": "Louie"
    }
  ]
}

📘

JSONの値のタイプ

キーと値のペアの値は、次のいずれかのタイプが可能です。

  • ブール値: trueまたはfalse
  • 文字列: 引用符で囲まれた一連の文字。例: "John"
  • オブジェクト: ネストされたオブジェクトとも呼ばれ、固有の中括弧 { } で囲まれています。
  • 数値: 多くの場合、ステータスや一意のIDを返すために使用されます。例: 200
  • 配列: 角括弧 [ ] で囲まれた項目のリスト

JSONパスの構文

APIテストでアサーションや変数に使用する値を特定するには、JSONパスを記述する必要があります。JSONパスは、キー、ドット記法、角括弧を使用して特定の値を識別します。

キー

JSONオブジェクトでは、キーを使用して特定の値にアクセスします。たとえば、下記のJSONレスポンスボディの値true にアクセスするためのJSONパスは、キー "authenticated" から引用符を除いたもの authenticated となります。

{
  "authenticated": true
}

ドット記法

ネストされたオブジェクト内の値を抽出する必要がある場合は、JSONパスでドット記法のキーを使用します。下記のレスポンスでは、値 "[email protected]" にアクセスするためのJSONパスは data.email となります。

{
  "data": {
    "id": 7,
    "email": "[email protected]",
    "first_name": "John",
    "last_name": "Smith",
    "image": "https://example.com/7/image.jpg"
  }
}

角括弧

配列内の値にアクセスするには、角括弧と、特定の要素を示す数字を使用します。たとえば、ジャンル "comedy" にアクセスするためのJSONパスでは、キー data の後に [0] を続けたもの data[0] を使用して、配列内の最初の項目を指定します。

{
  "statusCode": 200,
  "message": "Genres",
  "data": [
    "comedy",
    "horror",
    "noir",
    "action",
    "drama",
    "rom-com",
    "art house"
  ]
}

📘

配列内の順番は0から数える

配列内の要素は0から数えます。配列内の最初の項目のインデックスは0番目です。

オブジェクト配列内のオブジェクトにアクセスする場合、キーと角括弧およびドット記法を組み合わせて適切な値を取得します。

たとえば、3番目のユーザーの一意のIDにアクセスするためのJSONパスは records[2].id となります。

{
  "records": [
    {
      "id": "rec25eKmUsfiieG2B",
      "createdTime": "2021-05-21T20:17:43.000Z",
      "username": "Jonny W"
    },
    {
      "id": "rec2dLF92AG8JTL0S",
      "createdTime": "2021-03-20T18:02:38.000Z",
      "username": "Debbie"
    },
    {
      "id": "rec5w5lUPzN8Yd3um",
      "createdTime": "2021-03-20T20:41:51.000Z",
      "username": "Louie"
    }
  ]
}

別の例で、「戦争と平和」の翻訳者の姓である "Briggs" という値にアクセスするためのJSONパスは、results[0].translator.lastname となります。

{
  "results": 
  [
    {
      "title": "War and Peace",
      "author": {
        "lastname": "Tolstoy",
        "firstname": "Leo"
      },
      "publisher": "Penguin",
      "translator": {
        "lastname": "Briggs",
        "firstname": "Anthony"
      }
    },{
      "title": "The Death of Ivan Ilyich", 
      "author: {
        "lastname": "Tolstoy",
        "firstname": "Leo"
      },
      "publisher": "Liveright",
      "translator": {
        "lastname": "Carson",
        "firstname": "Peter"
      }
    }
  ]
}