首页 > Web开发 > 详细

在golang中使用json

时间:2019-12-19 21:06:41      阅读:80      评论:0      收藏:0      [点我收藏+]

jsoniter高性能json库

非常快,支持java和go

marshal使用的一些坑

package main

import (
    "encoding/json"
    "fmt"
)

type User struct {
    Id   int `json:"id,string"` //加了这个序列化到json中int类型会被转换成string类型
    Name string `json:"name"` //加了这个打印出来就是小写的name
    //age int 如果这里是小写的age,则序列化之后print无法打印出来,marshal只可以序列化可以导出的属性
    Age int `json:"age,omitempty"` //加了omitempty之后,如果该值为初始化空值,则不会输出,因为是int所以这里是0
    Address string `json:"-"` //加了中划线的值是绝对被忽略的
}

func main() {
    var json = jsoniter.ConfigCompatibleWithStandardLibrary //使用jsoniter第三方包替换官方json模块提升json模块性能
    u := User{
         Id:   12,
        Name: "Jerry",
        Age:  0,
    }
    data, err := json.Marshal(&u) //data是byte类型
    if err != nil {
        return
    }
    fmt.Println(string(data)) //{"id":"0","name":"Jerry"} //因为Age是0所以被omitempty过滤了,Address被-过滤了
    u2 := &User{}
    json.Unmarshal(data, u2) //反序列化data仍然需要使用byte类型
    fmt.Println(u2) //&User{12 jerry 0} 可以发现Address没有反序列化,被过滤掉的字段无法反序列化到结构体中
}




在golang中使用json

原文:https://www.cnblogs.com/hualou/p/12069806.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!