JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptオブジェクトをクエリ文字列にエンコードする方法

クエリ文字列(クエリストリング)は、複数のクエリパラメータから構成され、サーバーへデータを送信するために使用されるURLの一部です。この部分は省略可能ですが、利用する場合は開発者が自ら構築する必要があります。その際に役立つのが、JavaScriptのネイティブメソッドであるencodeURIComponent()です。

encodeURIComponent()とは

encodeURIComponent()は、URI(Uniform Resource Identifier)の構成要素をエンコードするための関数です。特定の文字を、その文字のUTF-8エンコーディングを表す1〜4個のエスケープシーケンスに置き換えて処理します。これにより、日本語などのマルチバイト文字や特殊記号も、安全にURLへ含められるようになります。

ES6以降の新しい構文を活用すれば、オブジェクトをクエリ文字列形式へ変換することもシンプルに実装できます。以下がその例です。

サンプルコード

let obj = {
    name: 'John',
    age: 25,
    city: 'Chicago'
};
let qs = Object.keys(obj)
          .map(k => `${encodeURIComponent(k)}=${encodeURIComponent(obj[k])}`)
          .join('&');
console.log(qs);

このコードでは、Object.keys()でオブジェクトのキー一覧を取得し、map()で各キーと値を「キー=値」の形式に整形しています。それぞれencodeURIComponent()でエンコードし、最後にjoin('&')で&区切りの文字列に連結しています。

実行結果

上記のコードを実行すると、コンソールには次の出力が表示されます。

name=John&age=25&city=Chicago

補足:URLSearchParamsを使ったより簡潔な方法

モダンなブラウザ環境では、標準APIのURLSearchParamsを使うことで、さらに短く書くことも可能です。

const qs = new URLSearchParams(obj).toString();
console.log(qs); // name=John&age=25&city=Chicago

URLSearchParamsはキーと値を自動的にエンコードしてくれるため、encodeURIComponent()を手動で呼び出す必要がなく、コードの可読性と保守性が向上します。レガシー環境をサポートする必要がある場合のみ、ES6構文による手動実装を選ぶとよいでしょう。

  1. JavaScriptのRegExp(正規表現)オブジェクトとは?基本の使い方をわかりやすく解説

    RegExp(正規表現)オブジェクトは、テキストに対してパターンマッチングを行い、目的の文字列部分を検索・抽出するために使用されます。JavaScriptでは、RegExpオブジェクトを「RegExpコンストラクタ」または「リテラル構文」の2通りの方法で作成できます。 RegExpオブジェクトの作成方法 コンストラクタを使用する場合: new RegExp(pattern) リテラル構文を使用する場合: /pattern/ 主なメソッド test():文字列がパターンに一致するかどうかを真偽値(true / false)で返します。 exec():パターンに一致した文字列を返します。

  2. JavaScriptのオブジェクト初期化子とは?使い方をサンプルコードで解説

    オブジェクト初期化子とは オブジェクト初期化子(Object Initializer)は、新しく生成したオブジェクトを初期化するための式です。波括弧 {} の中に、「プロパティ名」と「それに対応する値」のペアを0個以上、カンマ区切りで列挙して記述します。 これにより、変数宣言と同時にオブジェクトの中身を簡単に定義することができます。 以下は、JavaScriptでオブジェクト初期化子を使用したサンプルコードです。 サンプルコード <!DOCTYPE html> <html lang="en"> <head> <meta chars