情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

Node.jsでオブジェクトを文字列に変換する

2016/03/22

オブジェクトを文字列に変換するにはutil.inspect関数を使用します。

第1引数にオブジェクトを指定します。

第2引数にオプションをオブジェクトとして指定します。オプションは指定しなくても構いません。

オプションとして重要なのはdepthです。

これはオブジェクトを文字列に変換する際の再帰の深さです。オブジェクトの深さがこれより深い場合には、オブジェクトを文字列化する代わりに[Object]という文字列が返されます。

デフォルトは2です。また、nullを指定すると、無制限に再帰します。

この関数を呼び出しても標準出力や標準エラー出力に文字列が出力される訳ではありません。この関数を呼び出すことによってオブジェクトを文字列に変換したものが返り値として得られます。

標準出力に文字列を出力するにはこの文字列を引数に指定してprocess.stdout.write関数やconsole.log関数、console.info関数などを呼び出さなければなりません。

標準エラー出力に文字列を出力するにはこの文字列を引数に指定してprocess.stderr.write関数やconsole.error関数、console.warn関数などを呼び出さなければなりません。

なお、オブジェクトの文字列への変換と標準出力への出力を一度に行うにはconsole.dir関数が便利です。

サンプルコード1

util.inspect関数の使用例です。

util-inspect.js

var util = require('util');

console.log(util.inspect({a: 'a', b: 'b', c: {d: {e: {f: {g: {}}}}}}));
console.log(util.inspect({a: 'a', b: 'b', c: {d: {e: {f: {g: {}}}}}}, {depth: 3}));
console.log(util.inspect({a: 'a', b: 'b', c: {d: {e: {f: {g: {}}}}}}, {depth: null}));

実行結果

C:\work\node>node util-inspect.js
{ a: 'a', b: 'b', c: { d: { e: [Object] } } }
{ a: 'a', b: 'b', c: { d: { e: { f: [Object] } } } }
{ a: 'a', b: 'b', c: { d: { e: { f: { g: {} } } } } }

サンプルコード2

console.log関数とutil.inspect関数を使用する場合とconsole.dir関数を使用する場合の比較です。

util-inspect-console-dir.js

var util = require('util');

console.log(util.inspect({a: 'a', b: 'b', c: {d: {e: {f: {g: {}}}}}}, {depth: null}));
console.dir({a: 'a', b: 'b', c: {d: {e: {f: {g: {}}}}}}, {depth: null});

実行結果

C:\work\node>node util-inspect-console-dir.js
{ a: 'a', b: 'b', c: { d: { e: { f: { g: {} } } } } }
{ a: 'a', b: 'b', c: { d: { e: { f: { g: {} } } } } }

関連

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-Node.js