如何将以下划线开头的字段编组为 JSON [Golang]

ley*_*ski 2 json go mongodb

Go 的encoding/json包具有一些出色的 JSON 编组功能,并且出于所有意图和目的,这正是我所需要的。但是当我想尝试编组我想插入到 MongoDB 实例中的东西时,问题就出现了。

MongoDB 理解 _id为索引标识符,但 Go 的 JSON 包仅编组导出的字段,因此 MongoDB 在我保存时为文档创建自己的 ID,这是我不想要的,我什至还没有开始测试它对解组的影响一个结构。

有没有办法让 JSON 编组器包含以下划线开头的字段,而无需编写全新的字段?

Did*_*zia 5

您可以轻松地重命名字段。Go 名称应以要导出的大写字母开头,但 json 名称可以是任何符合 json 的名称。

这是一个借用 encoding/json 包文档的示例:

 package main

import (
    "encoding/json"
    "fmt"
    "os"
)

func main() {
    type ColorGroup struct {
        ID     int       `json:"_id"`
        Name   string
        Colors []string
    }
    group := ColorGroup{
        ID:     1,
        Name:   "Reds",
        Colors: []string{"Crimson", "Red", "Ruby", "Maroon"},
    }
    b, err := json.Marshal(group)
    if err != nil {
        fmt.Println("error:", err)
    }
    os.Stdout.Write(b)
}
Run Code Online (Sandbox Code Playgroud)