go语言json序列化与反序列化

来源:互联网 发布:ubuntu挂起后怎么唤醒 编辑:程序博客网 时间:2024/05/16 13:27
package mainimport ("encoding/json""fmt")type Change struct {Mid     int      //菜单IdActions []string //拥有的权限 "add"  "view"  "delete"  "update"}type Change_slice struct {ChgArr []Change //一个角色对应的菜单以及权限}func main() {//对象序列化为json字符串---------------------------------Beginvar c1, c2 Changevar msg Change_slicec1.Mid = 1c1.Actions = []string{"view", "add"}c2.Mid = 2c2.Actions = []string{"delete", "add", "update"}msg.ChgArr = []Change{c1, c2}fmt.Println(msg)b, er := json.Marshal(msg)if er == nil {fmt.Println(string(b))}//对象序列化为json字符串---------------------------------End//json字符串反序列化为对象---------------------------------Beginvar str string = `{"ChgArr":[{"Mid":1,"Actions":["view","add"]},{"Mid":2,"Actions":["delete","add","update"]}]}`var msgs Change_sliceerr := json.Unmarshal([]byte(str), &msgs)if err != nil {fmt.Println("Can't decode json message", err)} else {fmt.Println(msgs.ChgArr[1].Mid)}//json字符串反序列化为对象---------------------------------End}

输出结果:

{[{1 [view add]} {2 [delete add update]}]}

{"ChgArr":[{"Mid":1,"Actions":["view","add"]},{"Mid":2,"Actions":["delete","add","update"]}]}

2

0 0