基于Go语言开发一个JSON格式校验工具
作者:程序员爱钓鱼
在日常开发中,经常会遇到需要校验 JSON 格式是否正确的场景,如果 JSON 格式不正确,系统往往会报错甚至崩溃,因此开发一个 命令行 JSON 格式校验工具 非常实用,所以本文给大家介绍了如何基于Go语言开发一个JSON格式校验工具,需要的朋友可以参考下
在日常开发中,经常会遇到需要校验 JSON 格式是否正确的场景:
- • 前端调试接口返回数据时
- • 配置文件是否符合 JSON 格式
- • 接口 Mock 数据校验
如果 JSON 格式不正确,系统往往会报错甚至崩溃。因此开发一个 命令行 JSON 格式校验工具 非常实用。
一、程序目标
我们要实现一个命令行工具 jsoncheck,支持以下功能:
- 校验输入的字符串是否是合法 JSON
- 校验指定文件是否是合法 JSON
- (可选)格式化 JSON 输出
使用方式:
# 校验字符串
jsoncheck -str='{"name":"Go","version":1}'
# 校验文件
jsoncheck -file=config.json
# 校验并格式化
jsoncheck -file=config.json -pretty
二、实现思路
- 使用
flag包解析命令行参数 - 如果输入是字符串,直接用
json.Unmarshal校验 - 如果输入是文件,先读取文件内容再校验
- 如果传入
-pretty,就格式化输出 JSON
三、代码实现
main.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. 校验字符串
go run main.go -str='{"name":"Go","version":1}'
输出:
✅ JSON 格式正确
2. 校验错误 JSON
go run main.go -str='{"name":"Go",}'
输出:
❌ JSON 格式错误: invalid character '}' looking for beginning of object key string
3. 校验文件并格式化
go run main.go -file=config.json -pretty
输出:
✅ JSON 格式正确
格式化后的 JSON:
{
"name": "Go",
"version": 1
}
五、总结
这个 JSON 格式校验工具小巧但实用,涵盖了:
- 命令行参数解析(flag 包)
- JSON 校验(json.Unmarshal)
- 文件读取(os.ReadFile)
- 格式化输出(json.MarshalIndent)
在实际项目中,你可以将它打包成二进制程序放到 PATH 下,随时用来校验 JSON 文件。
到此这篇关于基于Go语言开发一个JSON格式校验工具的文章就介绍到这了,更多相关Go JSON格式校验工具内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
