golang结构体转json
读取json文件,并将该json文件转换成代码中的结构体
输入
一个json文件,结构如下所示:
{
"kekMap" : {
"1" : {
"version" : 1,
"cipherKey" : "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
}
}
}
输出
可以转换成的结构体为:
type KekData struct {
KekMap map[int64] KeyEntity `json:"kekMap"`
}
type KeyEntity struct {
Version int64 `json:"version"`
CipherKey string `json:"cipherKey"`
}
omitempty
Version int64 `json:"version,omitempty"`
tag-
Version int64 `json:"-"`
另外可以声明结构体中的成员变量为Json.Number,以解析序列化为string的数字。(后续再总结)
代码示例
在本地存储json字符串,文本命名为temp.txt
{
"kekMap" : {
"1" : {
"version" : 1,
"cipherKey" : "ABCDEFGHIJKLMNOPQRST"
}
}
package main
import (
"io/ioutil"
"encoding/json"
"fmt"
)
type KekData struct {
KekMap map[int64] KeyEntity `json:"kekMap"`
}
type KeyEntity struct {
Version int64 `json:"version"`
CipherKey string `json:"cipherKey"`
}
func main() {
tempFile := "temp.txt"
kekmap := local.KekData{}
file, _ := ioutil.ReadFile(tempFile)
_ = json.Unmarshal([]byte(file), &kekmap)
version := kekmap.KekMap[1].Version
cipherKey := kekmap.KekMap[1].CipherKey
fmt.Println(version)
fmt.Println(cipherKey)
}
运行结果如下所示:
1
ABCDEFGHIJKLMNOPQRST