如何使用下划线将字段编组为JSON [Golang]

时间:2015-05-15 15:34:45

标签: json mongodb go

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

MongoDB将_id理解为索引标识符,但是Go的JSON包只编组导出的字段,因此MongoDB在保存时为文档创建自己的ID,这是我不想要的,我甚至没有开始测试它将对结构进行解组的含义。

有没有办法让JSON marshaller包含以下划线开头而不写一个全新的字段?

1 个答案:

答案 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)
}