代码地址如下:
http://www.demodashi.com/demo/14946.html

概述

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

代码地址如下:
http://www.demodashi.com/demo/14946.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

Golang Json文件解析为结构体工具-json2go的更多相关文章

  1. golang中如何将json文件解析成结构体

    package tool import ( "bufio" "encoding/json" "fmt" "os" ) t ...

  2. Json文件解析(下)

    Json文件解析(下) 代码地址:https://github.com/nlohmann/json   从STL容器转换 任何序列容器(std::array,std::vector,std::dequ ...

  3. Json文件解析(上)

    Json文件解析(上) 代码地址:https://github.com/nlohmann/json 自述文件 alt=GitHub赞助商 data-canonical-src="https: ...

  4. PHP JSON文件解析并获取key、value,判断key是否存在

    /****************************************************************************** * PHP JSON文件解析并获取key ...

  5. 【微信】微信小程序 微信开发工具中新创建的json文件,编译报错VM1781:2 pages/module/module.json 文件解析错误 SyntaxError: Unexpected end of JSON input

    如果新创建报错:编译报错VM1781:2 pages/module/module.json 文件解析错误  SyntaxError: Unexpected end of JSON input 解决方法 ...

  6. NPOI+Json文件解析Excel

    记点笔记,加深印象!最近有个导入Excel工能需要完成,Excel列名是中文的,导入Excel我用的NPOI插件,如果不对Excel做解析,列名有可能会给我带来一些字符方面的麻烦,于是想到了一个比较l ...

  7. Twaver的mono-desiner导出的json文件解析

    以画的交换机为例,其他大概都差不多. 利用Twaver做出交换机模型如图1所示,其中,每一个端口都是一个单独的对象.具体Twaver操作流程参见网址:http://twaver.servasoft.c ...

  8. json 文件解析与应用

    第一步:首先弄一个 json 文件   我这里成为 config.json 内容如下 { ": { , "desc":"中华人民共和国" }, &qu ...

  9. json文件解析

    场景 读取json文件,读取子域名扫描结果 实现 >>> import json >>> with open("C:\\Users\\Windows32\ ...

随机推荐

  1. go语言之进阶篇创建goroutine协程

    1.goroutine是什么 goroutine是Go并行设计的核心.goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现 ...

  2. 升级Https前的可行性验证(一)

    升级Https之前的可行性验证 注意:自签证书和Nginx的安装都基于ContOS 6 一.如何申请OpenSSL自签证书 1.安装OpenSSL (一)OpenSSL 工具下载 下载地址 (二)Op ...

  3. iOS开发调试篇—Print Description of "string"

    Print Description of "string":把 string 的信息输出到控制台.Copy:复制 string 的信息,包含变量名,类名和值.View Value ...

  4. JS Replace() 高级用法(转)

    在很多项目中,我们经常需要使用JS,在页面前面对前台的某些元素做做修改,js 的replace()方法就必不可少. 经常使用"ABCABCabc".replace("A& ...

  5. position:fixed ,锚点定位不准确的问题

    解决方案: 参照 stackoverflow 的做法,在主体内容前加一个暗锚 <div class="anmao" id="experts">< ...

  6. 判断checkbox选中的个数

    直接看例子吧: shippingAddressList  为一个集合 <c:forEach items="${shippingAddressList }" var=" ...

  7. Eclipse小技巧:收起outline的头文件

  8. How to duplicate the records in a MongoDB collection

      // Fill out a literal array of collections you want to duplicate the records in. // Iterate over e ...

  9. PHP Manager for IIS

    SOAP error on IIS8 Registering new PHP version sets bad values set for FastCGI activityTimeout, requ ...

  10. MVC4发布到IIS,出现HTTP 错误 404.0 - Not Found

    web.config中添加 <system.webServer> <modules runAllManagedModulesForAllRequests="true&quo ...