您的位置:首页 > 编程语言 > Go语言

go语言之json的使用

2015-01-30 09:47 471 查看

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这个值了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: