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"
}