Go语言实战案例-开发一个JSON格式校验工具

在日常开发中,经常会遇到需要校验 JSON 格式是否正确的场景:

  • • 前端调试接口返回数据时
  • • 配置文件是否符合 JSON 格式
  • • 接口 Mock 数据校验

如果 JSON 格式不正确,系统往往会报错甚至崩溃。因此开发一个 命令行 JSON 格式校验工具 非常实用。


一、程序目标

我们要实现一个命令行工具 jsoncheck,支持以下功能:

    1. 校验输入的字符串是否是合法 JSON
    1. 校验指定文件是否是合法 JSON
    1. (可选)格式化 JSON 输出

使用方式:

ini 复制代码
# 校验字符串
jsoncheck -str='{"name":"Go","version":1}'

# 校验文件
jsoncheck -file=config.json

# 校验并格式化
jsoncheck -file=config.json -pretty

二、实现思路

    1. 使用 flag 包解析命令行参数
    1. 如果输入是字符串,直接用 json.Unmarshal 校验
    1. 如果输入是文件,先读取文件内容再校验
    1. 如果传入 -pretty,就格式化输出 JSON

三、代码实现

main.go

go 复制代码
package main

import (
    "encoding/json"
    "flag"
    "fmt"
    "os"
)

func main() {
    // 定义命令行参数
    strInput := flag.String("str", "", "需要校验的 JSON 字符串")
    fileInput := flag.String("file", "", "需要校验的 JSON 文件路径")
    pretty := flag.Bool("pretty", false, "是否格式化输出 JSON")

    flag.Parse()

    var data []byte
    var err error

    // 优先处理字符串输入
    if *strInput != "" {
        data = []byte(*strInput)
    } else if *fileInput != "" {
        data, err = os.ReadFile(*fileInput)
        if err != nil {
            fmt.Println("❌ 读取文件失败:", err)
            return
        }
    } else {
        fmt.Println("用法: jsoncheck -str='{"key":"value"}' 或 -file=path.json [-pretty]")
        return
    }

    // 校验 JSON 格式
    var js interface{}
    if err := json.Unmarshal(data, &js); err != nil {
        fmt.Println("❌ JSON 格式错误:", err)
        return
    }

    fmt.Println("✅ JSON 格式正确")

    // 如果需要格式化输出
    if *pretty {
        formatted, _ := json.MarshalIndent(js, "", "  ")
        fmt.Println("格式化后的 JSON:")
        fmt.Println(string(formatted))
    }
}

四、运行效果

    1. 校验字符串
    css 复制代码
    go run main.go -str='{"name":"Go","version":1}'

    输出:

    javascript 复制代码
    ✅ JSON 格式正确
    1. 校验错误 JSON
    css 复制代码
    go run main.go -str='{"name":"Go",}'

    输出:

    typescript 复制代码
    ❌ JSON 格式错误: invalid character '}' looking for beginning of object key string
    1. 校验文件并格式化
    arduino 复制代码
    go run main.go -file=config.json -pretty

    输出:

    javascript 复制代码
    ✅ JSON 格式正确
    格式化后的 JSON:
    {
      "name": "Go",
      "version": 1
    }

五、总结

这个 JSON 格式校验工具小巧但实用,涵盖了:

  • 命令行参数解析(flag 包)
  • JSON 校验(json.Unmarshal)
  • 文件读取(os.ReadFile)
  • 格式化输出(json.MarshalIndent)

在实际项目中,你可以将它打包成二进制程序放到 PATH 下,随时用来校验 JSON 文件。


相关推荐
野犬寒鸦7 小时前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端·学习
我爱娃哈哈7 小时前
SpringBoot + Flowable + 自定义节点:可视化工作流引擎,支持请假、报销、审批全场景
java·spring boot·后端
李梨同学丶9 小时前
0201好虫子周刊
后端
思想在飞肢体在追9 小时前
Springboot项目配置Nacos
java·spring boot·后端·nacos
Loo国昌12 小时前
【垂类模型数据工程】第四阶段:高性能 Embedding 实战:从双编码器架构到 InfoNCE 损失函数详解
人工智能·后端·深度学习·自然语言处理·架构·transformer·embedding
ONE_PUNCH_Ge12 小时前
Go 语言泛型
开发语言·后端·golang
良许Linux13 小时前
DSP的选型和应用
后端·stm32·单片机·程序员·嵌入式
不光头强13 小时前
spring boot项目欢迎页设置方式
java·spring boot·后端
怪兽毕设13 小时前
基于SpringBoot的选课调查系统
java·vue.js·spring boot·后端·node.js·选课调查系统
学IT的周星星13 小时前
Spring Boot Web 开发实战:第二天,从零搭个“会卖萌”的小项目
spring boot·后端·tomcat