【go语言专题】golang如何快速读取复杂json文件

【go语言专题】golang如何快速读取复杂json文件_第1张图片

文章目录

  • 前言
  • 实践

前言

有时候我们需要从文件中读取josn并且反序列化为struct,首先肯定最头疼的就是创建是这个struct怎么建。

今天分享的是一个工具: https://oktools.net/json2go,可以快速将json转换成go的struct。

实践

  • 首先打开网站,把json输入进来,得到结构体,复制一下。
    【go语言专题】golang如何快速读取复杂json文件_第2张图片

  • 创建三个文件,分别用来读json、测试、还有一个josn文件。
    【go语言专题】golang如何快速读取复杂json文件_第3张图片

  • 读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
	}
}

  • 查看测试运行结果
    【go语言专题】golang如何快速读取复杂json文件_第4张图片

你可能感兴趣的:(go语言)