node.jsのいろいろなモジュール30 – qsでクエリ文字列のパース

2013.04.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

クエリストリングのパース

node-querystringモジュールは、クエリ文字列のパースおよびオブジェクトからクエリ文字列の組立を行うことができるモジュールです。
ネストしたケースでも、一定のルールに従っていればパース/構築してくれます。

環境構築方法

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.5
  • Node.js : v0.10.0
  • npm : 1.2.14

npmを使用してqsモジュールをインストールしましょう。

% npm install qs

qsモジュールを使ってみる

使い方は非常に簡単です。qsモジュールをrequireし、クエリ文字列をparse関数に渡すだけです。

//app.js
var qs = require('qs');

var parseStr = qs.parse('aaa=bbb&ccc=ddd');
console.log(parseStr);

実行してみると、クエリ文字列がパースされてオブジェクトになってます。

% node app.js		
{ aaa: 'bbb', ccc: 'ddd' }

ネストしたクエリ文字列もパース可能です。ネストさせる場合、[フィールド名]と指定します。

var parseStr = qs.parse('user[name][first]=taro&user[email]=taro@classmethod.jp');
console.log(parseStr);

% node app.js
{ user: { name: { first: 'taro' }, email: 'taro@classmethod.jp' } }

ちなみに、下記のようにすれば、parseStr.userは配列になります。

var parseStr = qs.parse('user[0]=taro&user[1]=taro@classmethod.jp');

オブジェクトからクエリ文字列を生成することもできます。

var userObj = { 
	user: { 
		name: { 
			first:'taro'
		} , 
		email: 'taro@classmethod.jp' 
	}
}
var queryStr = qs.stringify(userObj);
console.log(queryStr);

?や&などの文字は、ちゃんとエスケープされた状態でクエリ文字列が生成されます。

% node app.js
user[name][first]=taro&user[email]=taro%40classmethod.jp

まとめ

簡単にクエリ文字列のパースができました。自分で文字列をいじるより簡単に処理できますね。

参考サイトなど