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}