跟Java中几乎是一样的,需要注意的是go语言包管理机制的原因,go变量和引入包首字母需要大写,表示全部宝可以引用
以下示例以及调用API,go语言序列化后返回的是byte字节数组,需要额外转string
go
package main
import (
"encoding/json"
"fmt"
)
/**
json 序列化和反序列化
*/
func main() {
var s = Student{"张三","北京"}
//序列化
b, err := json.Marshal(s);
if err==nil{
fmt.Println("序列化后: ",b)
fmt.Println("转换后: ",string(b))
str := string(b)
var stu = &Student{}
//反序列化
json.Unmarshal([]byte(str),stu);
fmt.Println("反序列化后: " ,stu.Addre,stu.Name)
fmt.Println("反序列化后: " ,stu)
}
}
type Student struct {
//序列化后null的原因 有序结构体的原因 序列化包无法访问到其他包的字段
//对象首字母小写 小写表示私有 大写表示共有
Name string `json name xml:"name"`
Addre string `json name xml:"addre"`
}
Student 对象中我们这儿定义的是首字母大写变量,但一般明明按照首字母小写使用规范。
而json序列化包和Student包不在一个包内,反序列化会失败,对象值会为null,故此我们需要按照go语言中tag 序列化时候指定json序列化的变量 ,使用json时候会按照json后的变量进行序列化,xml同理
c 代码解读复制代码 Name string json name xml:"name"
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。