基于Go語言開發(fā)一個JSON格式校驗工具
在日常開發(fā)中,經(jīng)常會遇到需要校驗 JSON 格式是否正確的場景:
- • 前端調(diào)試接口返回數(shù)據(jù)時
- • 配置文件是否符合 JSON 格式
- • 接口 Mock 數(shù)據(jù)校驗
如果 JSON 格式不正確,系統(tǒng)往往會報錯甚至崩潰。因此開發(fā)一個 命令行 JSON 格式校驗工具 非常實用。
一、程序目標(biāo)
我們要實現(xiàn)一個命令行工具 jsoncheck,支持以下功能:
- 校驗輸入的字符串是否是合法 JSON
- 校驗指定文件是否是合法 JSON
- (可選)格式化 JSON 輸出
使用方式:
# 校驗字符串
jsoncheck -str='{"name":"Go","version":1}'
# 校驗文件
jsoncheck -file=config.json
# 校驗并格式化
jsoncheck -file=config.json -pretty
二、實現(xiàn)思路
- 使用
flag包解析命令行參數(shù) - 如果輸入是字符串,直接用
json.Unmarshal校驗 - 如果輸入是文件,先讀取文件內(nèi)容再校驗
- 如果傳入
-pretty,就格式化輸出 JSON
三、代碼實現(xiàn)
main.go:
package main
import (
"encoding/json"
"flag"
"fmt"
"os"
)
func main() {
// 定義命令行參數(shù)
strInput := flag.String("str", "", "需要校驗的 JSON 字符串")
fileInput := flag.String("file", "", "需要校驗的 JSON 文件路徑")
pretty := flag.Bool("pretty", false, "是否格式化輸出 JSON")
flag.Parse()
var data []byte
var err error
// 優(yōu)先處理字符串輸入
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
}
五、總結(jié)
這個 JSON 格式校驗工具小巧但實用,涵蓋了:
- 命令行參數(shù)解析(flag 包)
- JSON 校驗(json.Unmarshal)
- 文件讀取(os.ReadFile)
- 格式化輸出(json.MarshalIndent)
在實際項目中,你可以將它打包成二進制程序放到 PATH 下,隨時用來校驗 JSON 文件。
到此這篇關(guān)于基于Go語言開發(fā)一個JSON格式校驗工具的文章就介紹到這了,更多相關(guān)Go JSON格式校驗工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Go語言統(tǒng)計文件中每個字母出現(xiàn)頻率的方法
這篇文章主要介紹了如何使用Go語言統(tǒng)計文件中每個字母出現(xiàn)頻率 的完整內(nèi)容,本案例適合用來練習(xí)文件讀取、字符處理、map統(tǒng)計等基礎(chǔ)技能,感興趣的小伙伴跟著小編一起來看看吧2025-07-07
Goland 2020或2019軟件版本去掉a...或fmt...提示的方法
這篇文章主要介紹了Goland 2020或2019軟件版本去掉a...或fmt...提示的方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10

