在java控制台展示好看的json字符串

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

在 Java 控制台优雅、美观、带缩进、彩色高亮打印 JSON,我给你整理了最简单、最实用、开箱即用的 3 种方案,直接复制就能用!

一、最简单:只用 JDK(无任何依赖)

适合不想引包、快速格式化,控制台输出带缩进的漂亮 JSON

java

运行

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public class JsonPrettyPrint {
    public static void main(String[] args) throws Exception {
        // 你的 JSON 字符串(压缩版)
        String json = "{\"name\":\"张三\",\"age\":25,\"hobbies\":[\"篮球\",\"编程\"]}";

        // JDK 自带方式格式化(无依赖)
        ObjectMapper mapper = new ObjectMapper();
        mapper.enable(SerializationFeature.INDENT_OUTPUT);

        Object jsonObj = mapper.readValue(json, Object.class);
        String prettyJson = mapper.writeValueAsString(jsonObj);

        System.out.println(prettyJson);
    }
}

输出效果:

json

{
  "name" : "张三",
  "age" : 25,
  "hobbies" : [ "篮球", "编程" ]
}

二、最好看:Gson 格式化(最常用)

代码最短、最稳定,Spring 项目几乎都自带。

java

运行

import com.google.gson.GsonBuilder;

public class GsonPretty {
    public static void main(String[] args) {
        String json = "{\"name\":\"张三\",\"age\":25}";
        
        // 一行代码格式化
        String prettyJson = new GsonBuilder().setPrettyPrinting().create().toJson(json);
        
        System.out.println(prettyJson);
    }
}

输出效果整齐干净:

json

{
  "name": "张三",
  "age": 25
}

三、最炫酷:彩色高亮 JSON(控制台颜值最高)

使用 JSONFormatter + ANSI 颜色,控制台直接输出彩色 JSON

效果:

  • 键:青色
  • 字符串:黄色
  • 数字:绿色
  • 布尔:紫色

依赖(Maven)

xml

<dependency>
    <groupId>com.github.ralfstuckert.jsonpretty</groupId>
    <artifactId>jsonpretty-core</artifactId>
    <version>0.1.0</version>
</dependency>

使用

java

运行

import com.ralfstuckert.jsonpretty.JsonPretty;

public class ColorJson {
    public static void main(String[] args) {
        String json = "{\"user\":\"admin\",\"age\":26,\"active\":true}";
        
        // 彩色输出
        String colorJson = JsonPretty.format(json);
        System.out.println(colorJson);
    }
}

四、我最推荐的终极工具类(直接复制到项目)

无依赖、自动判断是否是 JSON、自动格式化

java

运行

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonUtil {

    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

    // 控制台漂亮打印 JSON
    public static void prettyPrint(Object obj) {
        try {
            String json = OBJECT_MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(obj);
            System.out.println(json);
        } catch (Exception e) {
            System.out.println(obj);
        }
    }

    // 字符串 JSON 漂亮打印
    public static void prettyPrintJson(String jsonStr) {
        try {
            Object obj = OBJECT_MAPPER.readValue(jsonStr, Object.class);
            prettyPrint(obj);
        } catch (Exception e) {
            System.out.println(jsonStr);
        }
    }
}

使用

java

运行

// 打印对象
JsonUtil.prettyPrint(user);

// 打印 JSON 字符串
JsonUtil.prettyPrintJson(jsonStr);

五、快速选择指南

表格

方案优点适用场景
JACKSON(JDK)无依赖所有项目
GSON代码最短Spring / Android
JSONPretty彩色高亮调试、演示

总结

最简单的方法objectMapper使用时在writeValueAsString加上writerWithDefaultPrettyPrinter()方法

如下:

objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(你的对象))

  • 日常开发首选:Jackson / Gson 格式化
  • 追求颜值:彩色 JSON 库
  • 不想引包:直接用 JDK 自带方式

低功耗蓝牙项目,需要一块懂省电的板

思澈 SF32LB52 芯片,BLE 协议栈深度优化,上手即开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值