golang中使用json转换结构体

两个结构体,其中一个结构体可以包含另外一个结构体,使用 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}

你可能感兴趣的:(Golang)