GO使用JSON

Go具有对JSON编码和解码的内置支持。它还支持自定义数据类型。
Marshal函数用于将go数据类型转换为JSON格式。
Marshal函数的语法为:

"func Marshal(v interface{}) ([]byte, error)"

Marshal返回v的JSON编码。
布尔值转换为JSON布尔值。浮点数, 整数和数字将转换为JSON数字。映射的键类型必须是字符串, 整数类型或实现encoding.TextMarshaler。
JSON的解码是使用Unmarshal函数完成的。
解组函数的语法为:
"func Unmarshal(data []byte, v interface{}) error"

Unmarshal解码JSON编码的值, 并将结果存储在v指向的值中。如果v为nil或不是指针, 则Unmarshal返回InvalidUnmarshalError。
我们还可以自定义存储在struct字段标签中“ json”键下的字段。我们可以使用该字段的名称, 然后是逗号分隔的选项列表。喜欢
Field int 'json:"myName"' // The appears in JSON as key "myName". Field int 'json:"myName, omitempty?'// The field is omitted from the object if its value is empty, Field int 'json:"-"' //// Field is ignored by this package.

Go JSON示例1
package main import "encoding/json" import "fmt"func main() { bolType, _ := json.Marshal(false) //boolean Value fmt.Println(string(bolType)) intType, _ := json.Marshal(10) // integer value fmt.Println(string(intType)) fltType, _ := json.Marshal(3.14) //float value fmt.Println(string(fltType)) strType, _ := json.Marshal("srcmini") // string value fmt.Println(string(strType)) slcA := []string{"sun", "moon", "star"} //slice value slcB, _ := json.Marshal(slcA) fmt.Println(string(slcB)) mapA := map[string]int{"sun": 1, "moon": 2} //map value mapB, _ := json.Marshal(mapA) fmt.Println(string(mapB)) }

输出:
false 10 3.14 "srcmini" ["sun", "moon", "star"] {"moon":2, "sun":1}

Go JSON示例2(用户定义的数据类型)
package mainimport ( "encoding/json" "fmt" "os" )type Response1 struct { Positionint Planet []string } type Response2 struct { Positionint'json:"position"' Planet []string 'json:"planet"' }func main(){ res1A := & Response1{ Position:1, Planet: []string{"mercury", "venus", "earth"}} res1B, _ := json.Marshal(res1A) fmt.Println(string(res1B)) res2D := & Response2{ Position:1, Planet: []string{"mercury", "venus", "earth"}} res2B, _ := json.Marshal(res2D) fmt.Println(string(res2B)) byt := []byte('{"pi":6.13, "place":["New York", "New Delhi"]}`) var dat map[string]interface{} if err := json.Unmarshal(byt, & dat); err != nil { panic(err) } fmt.Println(dat) num := dat["pi"].(float64) fmt.Println(num) strs := dat["place"].([]interface{}) str1 := strs[0].(string) fmt.Println(str1) str := `{"Position": 1, "Planet": ["mercury", "venus"]}` res := Response2{} json.Unmarshal([]byte(str), & res) fmt.Println(res) fmt.Println(res.Planet[1]) enc := json.NewEncoder(os.Stdout) d := map[string]string{"1":"mercury" , "2": "venus"} enc.Encode(d)}

【GO使用JSON】输出:
{"Position":1, "Planet":["mercury", "venus", "earth"]} {"position":1, "planet":["mercury", "venus", "earth"]} map[pi:6.13 place:[New York New Delhi]] 6.13 New York {1 [mercury venus]} venus {"1":"mercury", "2":"venus"}

    推荐阅读