c++ 如何将结构体转化成json_go实现json转化成golang struct

发布于:2021-10-26 02:31:48

go 这种强类型语言,在 decode json 的时候,一般需要定义一套数据结构用于映射,常用的就是 struct,定义json? tag


手动去写存在很大风险:


由于拼写错误,大小写错误导致没有正确解析,需要耗费时间去debug


那么有没有办法工具自动生成呢


我们可以先解析json数据得到json的语法树,然后,将json语法树转化成目标代码


举个例子:


[{ "description" : "An imaginary server config file", "logs" : {"level":"verbose", "dir":"/var/log"}, "host" : "antlr.org", "admin": ["parrt", "tombu"], "aliases": [ ], "Spaces": { }, "keys":[1,2,3,4], "null_": null, "bool_": true, "structs":[{"a":"a","b":"2"}]}]

针对这个json文件可以生成如下数据结构


package Generatedtype AutoGenerated []struct { Description string `json:"description"` Logs struct { Level string `json:"level"` Dir string `json:"dir"` } `json:"logs"` Host string `json:"host"` Admin []string `json:"admin"` Aliases []interface{} `json:"aliases"` Spaces struct { } `json:"Spaces"` Keys []float64 `json:"keys"` Null_ interface{} `json:"null_"` Bool_ bool `json:"bool_"` Structs []struct { A string `json:"a"` B string `json:"b"` } `json:"structs"`}

这个轮子的代码我放在


https://github.com/xiazemin/jsonToAll


欢迎体验


如何使用呢


package mainimport ( "fmt" "github.com/xiazemin/jsonToAll/file" "github.com/xiazemin/jsonToAll/generator" "log")func main() { strOri,strGen:=generator.Gen("./t.json","go") fmt.Println(strOri) log.Println(strGen) file.PutGoLang("./gen/t.go",strGen) strJsonOri,strJsonGen:=generator.Gen("./t.json","json") fmt.Println(strJsonGen) log.Println(strJsonOri) file.PutJson("./gen/t.json",strJsonGen)}









相关资源:最新Java JDK 8安装版(Windows 64位)

相关推荐

最新更新

猜你喜欢