两个结构体,其中一个结构体可以包含另外一个结构体,使用 json
可以使结构体字段比较多的结构体可以赋值给字体少的。
package main
import (
"encoding/json"
"fmt"
)
type KeyBasic struct {
UserName string `json:"username"`
Algorithm string `json:"algo"`
Size uint `json:"size"`
}
type KeyUsage struct {
UserName string `json:"username"`
Algorithm string `json:"algo"`
Size uint `json:"size"`
Usage string `json:"usage,omitempty"`
}
func main() {
key := KeyUsage{
UserName: "hello",
Algorithm: "rsa",
Size: 2048,
Usage: "",
}
keyBytes, err := json.Marshal(key)
if err != nil {
fmt.Println("json unmarshal err")
}
fmt.Println(string(keyBytes))
keyUse := KeyBasic{}
err = json.Unmarshal(keyBytes, &keyUse)
if err != nil {
fmt.Printf("err:%s\n", err.Error())
}
fmt.Printf("basic:%v\n", keyUse)
}
结果如下:
{"username":"hello","algo":"rsa","size":2048}
basic:{hello rsa 2048}