Go struct和map转化为JSON串

Posted liuhmmjj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go struct和map转化为JSON串相关的知识,希望对你有一定的参考价值。

struct和map转化为json串主要就是由于map无序,转化后的json串key是无序的

如果参数是接收一个参数,那么通过结构体和map转化都是可以的

代码示例:

package main

import (
	"encoding/json"
	"fmt"
)
type Person struct 
	Name string `json:"name"`
	Age  int    `json:"age"`
	Like []string `json:"like"` //不加`json:"like"`的话转化后的key为首字母大写的"Like"


func main()
	fmt.Println("---------struct2json---------")
	struct2Json()
	fmt.Println("---------map2json------------")
	map2Json()



func struct2Json() 
	//转换从json的字段必须首字母大写

	stu := Person"Yang", 31,[]string"电影", "学习"

	//json_byte, err := json.Marshal(stu)
	json_byte, err := json.MarshalIndent(stu, "", " ") //看上去更加格式化
	//json_byte, err := json.Marshal(stu, )

	if err != nil 
		fmt.Println("json.Marshal error")
		return
	
	fmt.Println(string(json_byte))




func map2Json() 
	person := make(map[string]interface, 6)
	person["name"] = "Yang"
	person["age"] = 31
	person["like"] = []string"电影", "学习"
	//json_byte, err := json.Marshal(stu)
	json_byte, err := json.MarshalIndent(person, "", " ") //进行格式处理
	if err != nil 
		fmt.Println("json.Marshal error")
		return
	
	fmt.Println(string(json_byte))

输出结果:

---------struct2json---------

 "name": "Yang",
 "age": 31,
 "like": [
  "电影",
  "学习"
 ]

---------map2json------------

 "age": 31,
 "like": [
  "电影",
  "学习"
 ],
 "name": "Yang"

以上是关于Go struct和map转化为JSON串的主要内容,如果未能解决你的问题,请参考以下文章

Go struct和map转化为JSON串

Go语言高级特性总结——StructMap与JSON之间的转化

Go语言处理JSon字段

Go_14:GoLang中 jsonmapstruct 之间的相互转化

Go -- 在Go语言中使用JSON struct

1.5 GO json转Map