Nodejs 控制台如何格式化输出 JSON 数据

Nodejs 控制台如何格式化输出 JSON 数据

最近在折腾 node-webkit, 发现 console.log 在命令行界面输出 JSON 数据的时候已经 JSON.parse() 过得数据没有格式化…有办法么…

17 回复

当然可以!在 Node.js 中,你可以使用一些简单的方法来格式化并输出 JSON 数据。console.log 函数默认情况下会输出格式化的 JSON 数据,但如果你发现它没有按预期工作,可能是因为你传递给 console.log 的数据不是有效的 JSON 格式。

以下是一些方法来确保你的 JSON 数据在控制台上以良好的格式显示:

方法一:直接使用 console.log

假设你有一个 JSON 对象,可以直接使用 console.log 输出:

const data = {
    name: "John Doe",
    age: 30,
    hobbies: ["reading", "coding", "traveling"]
};

console.log(data);

这将自动格式化并输出 JSON 数据。如果你传递的是一个字符串形式的 JSON 数据,你需要先将其转换为对象:

const jsonData = '{"name":"John Doe","age":30,"hobbies":["reading","coding","traveling"]}';

// 将 JSON 字符串解析为 JavaScript 对象
const parsedData = JSON.parse(jsonData);

console.log(parsedData);

方法二:使用 util.inspect 进行更复杂的格式化

如果你需要更多的格式化选项(例如,指定缩进),可以使用 Node.js 的内置模块 util

const util = require('util');
const data = {
    name: "John Doe",
    age: 30,
    hobbies: ["reading", "coding", "traveling"]
};

console.log(util.inspect(data, { showHidden: false, depth: null, colors: true }));

在这个例子中:

  • showHidden: false 表示不显示不可枚举的属性。
  • depth: null 表示不限制对象层次的深度。
  • colors: true 表示使用颜色高亮输出。

示例:完整代码

const util = require('util');

const jsonData = '{"name":"John Doe","age":30,"hobbies":["reading","coding","traveling"]}';

// 解析 JSON 字符串
const parsedData = JSON.parse(jsonData);

// 使用 console.log 输出
console.log(parsedData);

// 或者使用 util.inspect 进行更复杂的格式化
console.log(util.inspect(parsedData, { showHidden: false, depth: null, colors: true }));

这样,你就可以在 Node.js 控制台上以良好的格式输出 JSON 数据了。希望这些信息对你有帮助!


没看明白, 楼主怎么折腾的, 给代码看看?

我在node-webkit项目里面 客户端访问mysql代码:

var Mysql = {
	pool : null,
	init : function(){
		var mysql  = require('mysql');
		Mysql.pool = mysql.createPool({
			host     : '',
			user     : '',
			password : '',
			database : ''
		});
	},
	searchBySin : function(sin){
		Mysql.pool.query('SELECT * FROM xx WHERE xx = xx', function(err, rows, fields) {
			if (err) throw err;
			console.log(rows[0]);
		});	
	}
}
这样输出,我希望是类似![希望格式](http://img5.tuchuang.org/uploads/2014/04/13DE07FF-0612-43BF-ACC4-614098367FE0.png.jpg)
但是实际输出是类似json字符串

console.dir(rows); 是不是要这个效果?

忘记@…

一样的.还是乱码,浏览器不管怎么样都ok,命令行里面不管怎么样都是乱

你现在的输出的内容长什么样子的?

无格式,无空格字符串

可以试下 util.inspect 方法 http://nodejs.org/api/util.html

貌似不是我想要的哈,还是不纠结了…

撸主是想要这样的效果么? node-adodb 大图

binggo,要的就是这样!

JSON.stringify({a:{b:{c:{d:[1,2,3]}}}}, null,2);

mark

自己重新实现console.log函数啊

要在 Node.js 中格式化输出 JSON 数据,你可以使用 util.inspect 方法或者使用 JSON.stringify 方法。这两个方法都可以帮助你在控制台上以可读的格式打印 JSON 数据。

使用 util.inspect

util.inspect 方法可以将对象转换为字符串,并且支持自定义深度和颜色输出。这在调试时特别有用。

const util = require('util');

const jsonData = {
    name: 'John Doe',
    age: 30,
    skills: ['JavaScript', 'Node.js']
};

console.log(util.inspect(jsonData, { colors: true, depth: null }));

使用 JSON.stringify

JSON.stringify 方法可以将 JavaScript 对象转换成 JSON 字符串,并且可以指定缩进字符来美化输出。

const jsonData = {
    name: 'John Doe',
    age: 30,
    skills: ['JavaScript', 'Node.js']
};

console.log(JSON.stringify(jsonData, null, 2));

示例

假设你有一个复杂的 JSON 数据结构:

const complexJsonData = {
    user: {
        id: 1,
        name: 'John Doe',
        details: {
            age: 30,
            skills: ['JavaScript', 'Node.js']
        }
    },
    posts: [
        { title: 'Node.js Basics', views: 1000 },
        { title: 'Advanced Node.js', views: 500 }
    ]
};

使用 util.inspect

console.log(util.inspect(complexJsonData, { colors: true, depth: null }));

使用 JSON.stringify

console.log(JSON.stringify(complexJsonData, null, 2));

以上两种方法都能使 JSON 数据在控制台上更易于阅读。你可以根据需要选择合适的方法。

回到顶部