go语言之json的使用
作为先天具有高并发的go语言,经常用于网络传输,go语言为我们提供了json的数据封装,
便于数据的交换和解析。下面来看看go语言中的json使用。代码最为明显。
重要函数
func Marshal(v interface{}) ([]byte, error) 编码成JSON数据
func Unmarshal(data []byte, v interface{}) error 将JSON数据解码
package main import ( "encoding/json" "fmt" ) type test struct { Name string `json:"test_name"` Age int `json:"test_age"` g int `json:"test_g"` //这里外层的不是单引号 } func main() { t := test{ Name: "bojie", Age: 100, g: 1, //注意这里也要有个逗号 } data, _ := json.Marshal(t) fmt.Println(data, string(data)) var t1 test _ = json.Unmarshal(data, &t1) fmt.Println(t1.Name)<span style="font-family: Arial, Helvetica, sans-serif;">}</span>
上面的代码输出如下
[123 34 116 101 115 116 95 110 97 109 101 34 58 34 98 111 106 105 101 34 44 34 116 101 115 116 95 97 103 101 34 58 49 48 48 125]
{"test_name":"bojie","test_age":100} bojie
看输出就可以知道,data为[]byte类型。
对,细心的会发现,为什么g的信息没有呢?那是因为大小写的问题,如果结构体内的名字为小写则自动进行忽略。不会进行json封装。
恩,上面是对结构体的json编码和解码。
那我们怎么从以下字符串读取到test_name的值呢?
{"test_name":"bojie","test_age":100}
我们可以先把创建一个map类型 如 var tmp map[string]string
然后
json.Unmarshal(msg, &tmp);//msg为上面的字符串,tmp为map类型
然后我们可以通过tmp["test_name"]就可以获得bojie这个值了。
有疑问加站长微信联系(非本文作者)