JavaScript オブジェクトキーガイド

JavaScript の Object Keys を snake_case に変換

frontend が camelCase、API が snake_case を期待する場合、serialization 境界で key を変換します。

Camel Case Converter 編集チーム 著公開日 2026/09/12最終レビュー

JavaScript 実装

function toSnakeKey(key) {
  return key.replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2").replace(/([a-z0-9])([A-Z])/g, "$1_$2").replace(/[-\s]+/g, "_").toLowerCase()
}

function keysToSnake(value) {
  if (Array.isArray(value)) return value.map(keysToSnake)
  if (value === null || typeof value !== "object") return value
  const output = {}
  for (const [key, child] of Object.entries(value)) {
    const nextKey = toSnakeKey(key)
    if (Object.hasOwn(output, nextKey)) throw new Error(`Key collision: ${nextKey}`)
    output[nextKey] = keysToSnake(child)
  }
  return output
}

通常の camelCase と acronym 境界を分割してから separator を正規化し、小文字化します。

入力を直接変更せず新しい object を組み立てると、代入前に collision check ができます。

本番環境のエッジケース

  • HTTPURL、userID、OAuthToken などには明示的な略語 mapping が必要な場合があります。
  • _id や $schema のような意味を持つ prefix は保持する選択肢があります。
  • API contract が deep conversion か top-level-only か先に決めます。
  • 異なる JavaScript key が同じ snake_case になるため collision check を行います。

オブジェクトキーをオンラインでテスト

JSON を貼り付けて、再帰変換、トップレベルのみ、除外キー、_/$ 接頭辞、衝突処理を確認できます。

.json ファイルをドロップ、または端末から選択

ファイルはブラウザ内でのみ読み取ります。最大 5 MB。

変換後 JSON
{
  "user_profile": {
    "first_name": "Ada",
    "created_at": "2026-09-12"
  }
}

解析、ファイル読み込み、整形、キー変換はすべてブラウザ内で実行されます。JSON 入力は変換サーバーへ送信されません。