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,golang,json,开发语言)