1. 程式人生 > >Go語言操作json

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都沒發現這種首字母大小寫問題。