LoginSignup
24

More than 5 years have passed since last update.

【Node.js】querystring.parseでクエリ文字列のパース

Last updated at Posted at 2016-05-17

クエリ文字列をオブジェクト形式に変換してくれる便利な奴。
※Nodeのバージョンは6.1です。

標準ライブラリ querystring

// 標準ライブラリなので、パッケージインストールは不要。
const querystring = require('querystring')

console.log(querystring)
// { unescapeBuffer: [Function],
//   unescape: [Function],
//   escape: [Function],
//   encode: [Function],
//   stringify: [Function],
//   decode: [Function],
//   parse: [Function] } ← コレ

キホン

querystring.parse(str[, sep][, eq][, options])

使い方一覧

const parse = querystring.parse

シンプルパース

// 文字列をオブジェクト形式に変換する。
console.log(parse("login=yes")) // { login: 'yes' }

割り当て文字指定

// デフォルトでは、=を割り当て文字として認識。
console.log(parse("login>yes")) // { 'login>yes': '' } parse失敗。

// 第三引数に割り当て文字を指定できる。
console.log(parse("login>yes", null, ">")) // { login: 'yes' } parse成功。

セパレータ指定

// 複数対応可能。
console.log(parse("login=yes&member=no")) // { login: 'yes', member: 'no' }

// 第二引数にセパレータを指定可能。
console.log(parse("login=yes/member=no")) // { login: 'yes/member=no' } parse失敗。
console.log(parse("login=yes/member=no", "/")) // { login: 'yes', member: 'no' } parse成功。

オプション指定

// 第四引数はオプション。

// maxKeysで個数制限。
console.log(parse("login=yes&member=no", null, null, {maxKeys: 1})) // { login: 'yes' } 1つだけparse

// decodeURIComponentでdecode指定。
console.log(parse('%D6%D0%CE%C4=yes&メンバー=no')) // { '����': 'yes', 'メンバー': 'no' } デコード失敗
console.log(parse('%D6%D0%CE%C4=yes&メンバー=no', null, null, {decodeURIComponent: gbkDecodeURIComponent})) // { '中文': yes, foo: 'bar' }

公式Doc:https://nodejs.org/api/querystring.html#querystring_querystring_parse_str_sep_eq_options

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24