• 在golang中使用json


    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没有反序列化,被过滤掉的字段无法反序列化到结构体中
    }




  • 相关阅读:
    ==和===
    Println、Printf、Sprintf区别
    BurpSuite代理https
    scp
    Tomcat Ajp(CVE-2020-1938)
    Chrome-HackBar破解
    crontab
    Sql注入之postgresql
    Sql注入之oracle
    LeetCode简单题(一)
  • 原文地址:https://www.cnblogs.com/hualou/p/12069806.html
Copyright © 2020-2023  润新知