JSON 매핑

Google Ads API의 REST 인터페이스를 사용할 때는 Google Ads API의 .proto 설명자 파일에 정의된 것과 동일한 리소스 및 유형의 JSON 표현을 사용해야 합니다. JSON 인코딩 스키마는 프로토콜 버퍼 언어 가이드JSON 매핑 섹션에 설명된 표준 인코딩 스키마를 따릅니다.

일반적으로 서비스와 주고받는 모든 최상위 메시지는 단일 JSON 객체입니다. 대부분의 변형 요청에는 여러 개의 create, update 또는 delete 작업이 포함된 operations 배열이 포함됩니다. 마찬가지로 search 응답은 results 결과(쿼리 결과 집합 포함)가 포함된 JSON 객체입니다.

식별자는 JSON의 snake_case (프로토콜 버퍼)에서 lowerCamelCase로 변환됩니다. 이 규칙에서 눈에 띄는 한 가지 주의 사항은 search 또는 searchStream를 사용하여 Google Ads 쿼리 언어 쿼리를 보낼 때입니다. 쿼리 언어 자체는 사용 중인 인터페이스에 관계없이 스네이크 대소문자를 사용합니다. 그러나 REST의 쿼리 결과는 일반 JSON 객체로 반환되며 lowerCamelCase에 식별자가 포함됩니다.

예를 들어 계정 내 활성 키워드 목록을 가져오는 쿼리는 쿼리 자체 내에서 스네이크 대소문자를 사용합니다 (adGroupCriterion이 아니라 ad_group_criterion).

POST /v16/customers/CUSTOMER_ID/googleAds:searchStream HTTP/1.1
Host: googleads.googleapis.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN
developer-token: DEVELOPER_TOKEN

{
  "query": "SELECT ad_group_criterion.keyword.text
            FROM ad_group_criterion
            WHERE ad_group_criterion.type = 'KEYWORD'
            AND ad_group_criterion.status = 'ENABLED'"
}

하지만 응답은 JSON 요청에 래핑된 객체 (이 요청에서 searchStream를 사용하므로 JSON 배열로 래핑됨)이며 대신 CamelCase 식별자 adGroupCriterion를 사용합니다.

[
  {
    "results": [
      {
        "adGroupCriterion": {
          "resourceName": "customers/1842689525/adGroupCriteria/55771861891~10003060",
          "keyword": {
            "text": "pay per click"
          }
        }
      },
      ...
    ]
  }
]