Go的encoding/json
包具有一些出色的JSON编组功能,并且出于所有意图和目的,它正是我所需要的。但是,当我想尝试并编组我要插入MongoDB实例的内容时,问题就出现了。
MongoDB将_id
理解为索引标识符,但是Go的JSON包只编组导出的字段,因此MongoDB在保存时为文档创建自己的ID,这是我不想要的,我甚至没有开始测试它将对结构进行解组的含义。
有没有办法让JSON marshaller包含以下划线开头而不写一个全新的字段?
答案 0 :(得分:3)
您可以轻松重命名字段。 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)
}