golang 中 实现数据结构与json字符串的转换

golang 中 实现数据结构与json字符串的转换

package main

import (
	"encoding/json"
	"fmt"
)

func main() {
	// map转json
	m := map[string]interface{}{"张三": map[string]interface{}{"性别": "男", "年龄": 30}}
	json1, err := json.Marshal(m)
	if err != nil {
		fmt.Println(err)
	}
	// 返回值是 []byte 切片,需要强转string
	fmt.Printf("%v\n", string(json1))

	// json 转map
	str := string(json1) // m模拟json字符串
	var buf = make(map[string]interface{})
	json.Unmarshal([]byte(str), &buf) // 转换之前要将json字符串转成byte切片类型 相当于先将字符串拆成字符切片再转
	fmt.Println(buf)

	// 切片转json
	s := []interface{}{map[string]interface{}{"张三": map[string]interface{}{"年龄": 30, "性别": "男"}, "王五": map[string]interface{}{"年龄": 30, "性别": "男"}}}

	buf1, err := json.Marshal(s)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(string(buf1))

	// json 转切片
	var ss = make([]interface{}, 1)
	json.Unmarshal(buf1, &ss)
	fmt.Println(ss)

	// 结构体转JSON
	type Student struct {
		Name   string   `json:"name"`
		Gender string   `json:"gender"`
		Age    int      `json:"age"`
		Hobby  []string `json:"hobby"`
	}
	// 因为设置了tag,所以转出来的json是小写的
	stu1 := Student{"张三", "男", 20, []string{"篮球", "RAP", "唱跳"}}
	json_stu1, _ := json.Marshal(stu1)
	fmt.Println(string(json_stu1))
	// json转结构体
	json_stu11 := new(Student)
	json.Unmarshal(json_stu1, json_stu11)
	fmt.Println(*json_stu11)
}

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:点我我会动 设计师:我叫白小胖 返回首页
评论

打赏作者

不正经Python学习

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值