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}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值