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

参考链接