概述
json2go是一個基於Golang開發的輕量json文件解析、轉換命令行工具,目前支持轉換輸出到屏幕、輸出到文件兩種方式。
功能
- json文件讀取、解析
- golang結構體輸出
支持輸出方式
- 輸出到屏幕終端
- 輸出到.go文件
安裝
$ go get -u github.com/usthooz/json2go
$ go build
$ go install
實現思路
在第三方對接時,經常需要將響應的json文件轉換為結構體,網上也有類似的工具進行直接轉換,但是作為開發者,相信是更喜歡在命令行工作的,所以開發了這款json轉換工具。
流程結構
如下圖所示為項目實現流程及結構:
代碼目錄結構
主要代碼
- 常量及變量定義
const (
// 主命令
exec = "json2go"
// version 當前版本
version = "v1.0"
)
var (
// command 命令
command string
// workPath current work path
workPath string
// jsonFile json文件名稱
jsonFile string
// outputFile 輸出文件名稱
outFile string
// outType 輸出類型
outType string
)
var (
// commandsMap 命令集
commandMap map[string]*Command
)
// Command
type Command struct {
Name string
Detail string
Func func(name, detail string)
}
- 命令初始化
// initCommands
func initCommands() {
for i, v := range os.Args {
switch i {
case 1:
command = v
}
}
// 初始化命令列表
commandMap = map[string]*Command{
"v": &Command{
Name: "v",
Detail: "查看當前版本號",
Func: getVersion,
},
"help": &Command{
Name: "help",
Detail: "查看幫助信息",
Func: getHelp,
},
"gen_types": &Command{
Name: "gen_types",
Detail: "根據json文件自動生成struct",
Func: genStruct,
},
}
}
- main方法
在使用時,main作為主要調用方,完成命令銜接。
func main() {
// 獲取當前目錄
getWorkDir()
// 初始化命令
initCommands()
if len(os.Args) < 2 {
getHelp("help", commandMap["help"].Detail)
return
}
flag.CommandLine.Parse(os.Args[2:])
if !checkArgs() {
return
}
c := commandMap[command]
if c == nil {
getHelp("help", commandMap["help"].Detail)
return
} else {
c.Func(c.Name, c.Detail)
}
}
使用
- 屏幕輸入json2go或者json2go help查看幫助信息,如下圖所示。
運行
- 默認輸出到屏幕終端,如下圖所示
常用命令及方法
- 新建json文件
- 使用命令將json文件轉換為Golang結構體,可選擇輸出到文件以及屏幕
- 使用默認配置
json2go gen_types
- 輸出到文件
json2go gen_types -out_type=file -out_file=out_types.go
- 輸出到屏幕
json2go gen_types -out_type=print
Golang Json文件解析為結構體工具-json2go
注:本文著作權歸作者,由demo大師代發,拒絕轉載,轉載需要作者授權