Golang - 结构字段中的首都

Sai*_*bid 29 json struct go

我正在使用这个库来访问couchDB(cloudant是具体的)"github.com/mikebell-org/go-couchdb",我注意到了一个问题.

当我将数据添加到数据库并传入结构时,只添加以大写字母开头的结构字段.

例如

type Person struct {
    name string
    Age  int
}

func main() {
    db, _ := couchdb.Database(host, database, username, password)
    joe := Person{
        name: "mike",
        Age:  190,
    }
    m, _ := db.PostDocument(joe)
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,只有"age"字段已更新并插入到我的数据库中.

我在另一个案例中也注意到了这个问题 - 当我做这样的事情时:

type Sample struct {
    Name string
    age  int 
}


joe := Sample{
    Name: "xx",
    age:  23,
}

byt, _ := json.Marshal(joe)

post_data := strings.NewReader(string(byt))
fmt.Println(post_data)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,只会打印出名称:

output : &{{"Name":"xx"} 0 -1}
Run Code Online (Sandbox Code Playgroud)

为什么是这样?如果我想要一个小写的字段并且在数据库中,那可能吗?

jul*_*enc 48

这是因为只导出以大写字母开头的字段,或者换句话说,在curent包之外(json在这种情况下在包中)可见.

以下是参考此规范的部分:http://golang.org/ref/spec#Exported_identifiers

尽管如此,你仍然可以使用所谓的"标签"来解组不以大写字母开头的json字段.使用该json包,这是使用的语法:

type Sample struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}
Run Code Online (Sandbox Code Playgroud)

有关此内容的详细信息,请参阅文档.


che*_*eng 5

json包仅stringfiy字段以大写字母开头。参见http://golang.org/pkg/encoding/json/

您需要这样定义结构:

type Sample struct{
    Name string `json:"name"`
    Age int `json:"age"`
}
Run Code Online (Sandbox Code Playgroud)