如何在控制台打印 JSON 数据:开发者必备技能
在软件开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于前后端数据交互、配置文件存储等场景,无论是调试接口响应、检查数据结构,还是验证数据处理逻辑,将 JSON 数据打印到控制台都是开发者最常用的操作之一,本文将详细介绍在不同编程语言和环境中打印 JSON 数据的方法,并附上实用技巧,帮助你高效调试和排查问题。
为什么需要打印 JSON 到控制台?
在开始具体方法前,我们先明确为什么要打印 JSON 数据,主要原因包括:
- 调试接口:在后端开发中,接口返回的数据是否符合预期?通过打印 JSON 响应,可以直接查看数据结构、字段值及错误信息。
- 数据验证:处理 JSON 数据时,解析后的对象/字典是否正确?打印中间结果能快速定位问题。
- 日志记录:在关键业务逻辑中打印 JSON 数据,便于后续追踪数据流转过程。
- 学习与测试:初学者可以通过打印 JSON 熟悉数据结构,测试时验证输入输出是否匹配。
主流语言/环境中打印 JSON 的方法
不同编程语言和框架对 JSON 的支持略有差异,但核心思路一致:将数据序列化为 JSON 字符串,再通过控制台输出函数打印,以下是常见场景的实操指南。
JavaScript(浏览器 & Node.js)
JavaScript 作为 JSON 的“原生语言”,打印 JSON 最简单直接。
浏览器环境(Chrome/Firefox 开发者工具)
直接使用 console.log() 即可,但需注意:如果直接打印对象,浏览器可能会优化输出(折叠对象结构)。推荐使用 JSON.stringify() 将对象转为 JSON 字符串,确保完整显示。
const data = {
name: "张三",
age: 25,
hobbies: ["阅读", "编程"],
address: {
city: "北京",
district: "朝阳区"
}
};
// 方法1:直接打印对象(可能被优化)
console.log(data);
// 方法2:转为 JSON 字符串打印(推荐,完整显示结构)
console.log(JSON.stringify(data));
// 方法3:格式化输出(带缩进,更易读)
console.log(JSON.stringify(data, null, 2)); // null 表示不替换属性,2 是缩进空格数
输出示例:
{
"name": "张三",
"age": 25,
"hobbies": ["阅读", "编程"],
"address": {
"city": "北京",
"district": "朝阳区"
}
}
Node.js 环境
Node.js 的 console.log() 行为与浏览器类似,但额外支持 util.inspect() 方法,可自定义输出格式。
const util = require('util');
const data = { /* 同上 */ };
// 方法1:JSON.stringify(推荐)
console.log(JSON.stringify(data, null, 2));
// 方法2:util.inspect(适合复杂对象,可配置深度)
console.log(util.inspect(data, { showHidden: false, depth: null, colors: true }));
Python
Python 中,json 模块提供了序列化方法,结合 print() 即可输出 JSON。
基本用法
import json
data = {
"name": "李四",
"age": 30,
"hobbies": ["旅行", "摄影"],
"address": {
"city": "上海",
"district": "浦东新区"
}
}
# 方法1:直接打印字典(格式可能不标准)
print(data)
# 方法2:转为 JSON 字符串打印(推荐)
json_str = json.dumps(data)
print(json_str)
# 方法3:格式化输出(带缩进,中文不转义)
print(json.dumps(data, ensure_ascii=False, indent=2))
输出示例(ensure_ascii=False 确保中文正常显示):
{
"name": "李四",
"age": 30,
"hobbies": ["旅行", "摄影"],
"address": {
"city": "上海",
"district": "浦东新区"
}
}
调试技巧:使用 pprint 模块
Python 的 pprint 模块可以“美化打印”字典/列表,无需手动转 JSON,适合本地调试:
from pprint import pprint pprint(data, indent=2) # 输出格式与 JSON 类似,但更易读
Java
Java 中,需借助第三方库(如 Gson、Jackson 或 org.json)将对象转为 JSON 字符串。
使用 Gson(Google 库)
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class JsonPrint {
public static void main(String[] args) {
String data = "{\"name\":\"王五\",\"age\":28,\"hobbies\":[\"游戏\",\"音乐\"]}";
// 方法1:直接打印 JSON 字符串
System.out.println(data);
// 方法2:解析对象后格式化输出
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Person person = gson.fromJson(data, Person.class);
String prettyJson = gson.toJson(person);
System.out.println(prettyJson);
}
static class Person {
String name;
int age;
String[] hobbies;
}
}
输出示例:
{
"name": "王五",
"age": 28,
"hobbies": ["游戏", "音乐"]
}
使用 Jackson(Spring Boot 默认库)
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
public class JsonPrint {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.INDENT_OUTPUT); // 启用缩放
String data = "{\"name\":\"赵六\",\"age\":35,\"hobbies\":[\"运动\",\"美食\"]}";
Person person = mapper.readValue(data, Person.class);
System.out.println(mapper.writeValueAsString(person));
}
static class Person {
public String name;
public int age;
public String[] hobbies;
}
}
C
C# 中,可以使用 System.Text.Json(.NET Core 3.0+ 内置)或 Newtonsoft.Json(经典库)打印 JSON。
使用 System.Text.Json
using System;
using System.Text.Json;
using System.Text.Json.Serialization;
public class JsonPrint
{
public static void Main()
{
var data = new
{
Name = "钱七",
Age = 40,
Hobbies = new[] { "绘画", "园艺" },
Address = new { City = "广州", District = "天河区" }
};
// 方法1:直接序列化(默认无缩进)
string json = JsonSerializer.Serialize(data);
Console.WriteLine(json);
// 方法2:格式化输出(带缩进)
var options = new JsonSerializerOptions { WriteIndented = true };
string prettyJson = JsonSerializer.Serialize(data, options);
Console.WriteLine(prettyJson);
}
}
输出示例:
{
"Name": "钱七",
"Age": 40,
"Hobbies": ["绘画", "园艺"],
"Address": {
"City": "广州",
"District": "天河区"
}
}
使用 Newtonsoft.Json
using Newtonsoft.Json; var data = /* 同上 */; string prettyJson = JsonConvert.SerializeObject(data, Formatting.Indented); Console.WriteLine(prettyJson);
Go
Go 语言中,标准库 encoding/json 提供了 JSON 序列化方法,结合 fmt.Println() 输出。
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Hobbies []string `json:"hobbies"`
Address struct {
City string `json:"city"`
District string `json:"district"`
} `json:"address"`
}
func main() {
data := Person{
Name: "孙八",
Age: 45,
Hobbies: []string{"钓鱼", "书法"},
Address: struct {
City string `json:"city"`
District string `json:"district"`
}{
City: "深圳",
District: "南山区",
},
}
// 方法1:转为 JSON 字符串打印
jsonBytes, _ := json.Marshal(data)
fmt.Println(string(jsonBytes))
// 方法2:格式化输出(带缩进)
prettyJsonBytes, _ := json.MarshalIndent(data, "", " ") // 缩进2空格
fmt.Println(string(prettyJsonBytes))
}
输出示例:
{
"name": "孙八


还没有评论,来说两句吧...