JSONは、APIで最も広く使用されているデータ形式です。多くのAPIリクエストは、JSONレスポンスボディで情報を返します。
APIテストエディターでのJSONレスポンスボディ
このガイドでは、JSONレスポンスボディの構造と、JSONパスを記述する構文の概要について説明します。これらはどちらも、APIテストエディターで JSONパスをプレビューする際に役立ちます。
JSONレスポンスボディの構造
JSONレスポンスボディは、オブジェクトと配列で構成されます。
JSONオブジェクト
JSONオブジェクトにはキーと値のペアで表現される1つ以上のプロパティが含まれており、プロパティ同士はコンマで区切られ、中括弧 { }
で囲まれています。
たとえば、ユーザーを認証するAPIコールは、ユーザーがログインしたことを示すために、以下のようなレスポンスボディを返す可能性があります。
{
"authenticated": true
}
このJSONレスポンスには、キーが "authenticated"
、値がtrue
のプロパティ1つだけが含まれています。
オブジェクトはネストすることも可能です。この例では、APIから以下のようなユーザー詳細情報が返されます。
{
"data": {
"id": 7,
"email": "email@example.com",
"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"
}
]
}
キーと値のペアの値は、次のいずれかのタイプが可能です。
- ブール値:
true
またはfalse
- 文字列: 引用符で囲まれた一連の文字。例:
"John"
- オブジェクト: ネストされたオブジェクトとも呼ばれ、固有の中括弧
{ }
で囲まれています。 - 数値: 多くの場合、ステータスや一意のIDを返すために使用されます。例:
200
- 配列: 角括弧
[ ]
で囲まれた項目のリスト
JSONパスの構文
APIテストでアサーションや変数に使用する値を特定するには、JSONパスを記述する必要があります。JSONパスは、キー、ドット記法、角括弧を使用して特定の値を識別します。
キー
JSONオブジェクトでは、キーを使用して特定の値にアクセスします。たとえば、下記のJSONレスポンスボディの値true
にアクセスするためのJSONパスは、キー "authenticated"
から引用符を除いたもの authenticated
となります。
{
"authenticated": true
}
ドット記法
ネストされたオブジェクト内の値を抽出する必要がある場合は、JSONパスでドット記法のキーを使用します。下記のレスポンスでは、値 "email@example.com"
にアクセスするためのJSONパスは data.email
となります。
{
"data": {
"id": 7,
"email": "email@example.com",
"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番目です。
オブジェクト配列内のオブジェクトにアクセスする場合、キーと角括弧およびドット記法を組み合わせて適切な値を取得します。
たとえば、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"
}
}
]
}