天天看點

Go語言操作json

下面是一段Go語言生成JSON的例子:

package main
import (
    "fmt"
    "encoding/json"
)
type Person struct {
    name string
    age  int
    sex   int
}
func main() {
    p := Person{name:"zhang", age:20, sex:1}
    j, _ = json.Marshal(p)
    fmt.Println(string(j))
}
           

執行以上代碼獲得結果:

{}
           

發現輸出一個空的json串,一開始以為自己寫的程式有問題,後來才發現是結構體字段名稱大小寫的原因造成的。将Person的字段首字母都改成大寫:

....
type Person struct {
    Name string
    Age int
    Sex int
}
...
p := Person{Name:"zhang", age:20, sex:1}
.....
           

執行以後獲得正确json字元串:

{"Name":"zhang","Age":20,"Sex":1}
           

但是,如果我就是要首字母小寫怎麼辦呢?我想要這樣的json串:

{"name":"zhang","age":20,"sex":1}
           

解決辦法是修改結構體定義,如下:

type Person struct {
    Name string `json:"name"`
    Age int   `json:"age"`
    Sex int  `json:"sex"`
}
           

重新執行以後就獲得想要的json的字元串了。Go語言這點很奇怪,之前用别的語言生成JSON都沒發現這種首字母大小寫問題。