最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Go語言開發(fā)一個JSON格式校驗工具

 更新時間:2025年09月08日 08:30:13   作者:程序員愛釣魚  
在日常開發(fā)中,經(jīng)常會遇到需要校驗 JSON 格式是否正確的場景,如果 JSON 格式不正確,系統(tǒng)往往會報錯甚至崩潰,因此開發(fā)一個 命令行 JSON 格式校驗工具 非常實用,所以本文給大家介紹了如何基于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,支持以下功能:

  1. 校驗輸入的字符串是否是合法 JSON
  2. 校驗指定文件是否是合法 JSON
  3. (可選)格式化 JSON 輸出

使用方式:

# 校驗字符串
jsoncheck -str='{"name":"Go","version":1}'

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

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

二、實現(xiàn)思路

  1. 使用 flag 包解析命令行參數(shù)
  2. 如果輸入是字符串,直接用 json.Unmarshal 校驗
  3. 如果輸入是文件,先讀取文件內(nèi)容再校驗
  4. 如果傳入 -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)

在實際項目中,你可以將它打包成二進(jìn)制程序放到 PATH 下,隨時用來校驗 JSON 文件。

到此這篇關(guān)于基于Go語言開發(fā)一個JSON格式校驗工具的文章就介紹到這了,更多相關(guān)Go JSON格式校驗工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go語言并發(fā)技術(shù)詳解

    Go語言并發(fā)技術(shù)詳解

    這篇文章主要介紹了Go語言并發(fā)技術(shù)詳解,本文講解了goroutine、channels、Buffered Channels、Range和Close等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • Go語言題解LeetCode888公平糖果交換示例詳解

    Go語言題解LeetCode888公平糖果交換示例詳解

    這篇文章主要為大家介紹了Go語言題解LeetCode888公平糖果交換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • go語言 bool類型的使用操作

    go語言 bool類型的使用操作

    這篇文章主要介紹了go語言 bool類型的使用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • go語言中HTTPRouter的算法演進(jìn)

    go語言中HTTPRouter的算法演進(jìn)

    這篇文章主要從開發(fā)中常見的應(yīng)用場景?“路由管理”?為例,為大家詳細(xì)介紹一下三種常用的實現(xiàn)方案背后的數(shù)據(jù)結(jié)構(gòu)和算法,感興趣的小伙伴可以了解一下
    2023-08-08
  • Go語言通過TCP協(xié)議實現(xiàn)聊天室功能

    Go語言通過TCP協(xié)議實現(xiàn)聊天室功能

    這篇文章主要為大家詳細(xì)介紹了Go語言中如何通過TCP協(xié)議實現(xiàn)聊天室功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • Go語言中slice作為參數(shù)傳遞時遇到的一些“坑”

    Go語言中slice作為參數(shù)傳遞時遇到的一些“坑”

    這篇文章主要給大家介紹了關(guān)于Go語言中slice作為參數(shù)傳遞時遇到的一些“坑”,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • 詳解Go語言中的iface和eface

    詳解Go語言中的iface和eface

    Go 是 Google 開發(fā)的一種編譯型、并發(fā)型,并具有垃圾回收功能的編程語言,這篇文章主要介紹了Go語言中的iface和eface,需要的朋友可以參考下
    2023-07-07
  • 使用Golang?Validator包實現(xiàn)數(shù)據(jù)驗證詳解

    使用Golang?Validator包實現(xiàn)數(shù)據(jù)驗證詳解

    在開發(fā)過程中,數(shù)據(jù)驗證是一個非常重要的環(huán)節(jié),而golang中的Validator包是一個非常常用和強大的數(shù)據(jù)驗證工具,提供了簡單易用的API和豐富的驗證規(guī)則,下面我們就來看看Validator包的具體使用吧
    2023-12-12
  • Go語言單鏈表實現(xiàn)方法

    Go語言單鏈表實現(xiàn)方法

    這篇文章主要介紹了Go語言單鏈表實現(xiàn)方法,實例分析了基于Go語言的單鏈表實現(xiàn)原理與使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • go并發(fā)編程sync.Cond使用場景及實現(xiàn)原理

    go并發(fā)編程sync.Cond使用場景及實現(xiàn)原理

    這篇文章主要為大家介紹了go并發(fā)編程sync.Cond使用場景及實現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08

最新評論

岚皋县| 晴隆县| 定安县| 安丘市| 阿克苏市| 山西省| 苗栗县| 双流县| 寻甸| 中西区| 新郑市| 井研县| 大庆市| 剑阁县| 微博| 阿拉善左旗| 凉城县| 顺昌县| 尼木县| 红安县| 栖霞市| 乐平市| 兴国县| 宁阳县| 无锡市| 喀喇沁旗| 广西| 旬阳县| 蕉岭县| 台中市| 玉田县| 洱源县| 双峰县| 瑞安市| 昭平县| 苏尼特左旗| 肥城市| 民和| 永城市| 宝鸡市| 建瓯市|