前言
有时候我们需要从文件中读取josn并且反序列化为struct,首先肯定最头疼的就是创建是这个struct怎么建。
今天分享的是一个工具: https://oktools.net/json2go,可以快速将json转换成go的struct。
实践
-
首先打开网站,把json输入进来,得到结构体,复制一下。
-
创建三个文件,分别用来读json、测试、还有一个josn文件。
-
读json文件如下
package json
import (
"encoding/json"
"fmt"
"io/ioutil"
)
type AutoGenerated struct {
Properties Properties `json:"properties"`
}
type AdjacentColors struct {
Type string `json:"type"`
Fielddata bool `json:"fielddata"`
}
type Properties struct {
AdjacentColors AdjacentColors `json:"adjacentColors"`
}
func ReadJsonFile() {
JsonParse := NewJsonStruct()
v := AutoGenerated{}
//下面使用的是相对路径,config.json文件和main.go文件处于同一目录下
JsonParse.Load("../a.json", &v)
fmt.Println(v.Properties.AdjacentColors.Fielddata)
}
type JsonStruct struct {
}
func NewJsonStruct() *JsonStruct {
return &JsonStruct{}
}
func (jst *JsonStruct) Load(filename string, v interface{}) {
//ReadFile函数会读取文件的全部内容,并将结果以[]byte类型返回
data, err := ioutil.ReadFile(filename)
if err != nil {
return
}
//读取的数据为json格式,需要进行解码
err = json.Unmarshal(data, v)
if err != nil {
return
}
}
- 查看测试运行结果