2015-05-15 39 views
1

Go的encoding/json包具有一些非常出色的JSON編組功能,並且對於所有意圖和目的,這正是我所需要的。但是當我想嘗試編組我想要插入到MongoDB實例中的東西時出現問題。如何將字段以下劃線開頭到JSON [Golang]

MongoDB將_id理解爲索引標識符,但Go的JSON包只彙集導出的字段,所以當我保存時,MongoDB爲文檔創建了自己的ID,而我並不想要,我甚至沒有開始測試其含義它將解構一個結構體。

有沒有辦法讓JSON編碼器包含以下劃線開頭的字段而不寫一個全新的?

回答

3

您可以輕鬆地重命名字段。 Go名稱應該以大寫字母開頭,但json名稱可以是任何符合json的名稱。

這裏是借來的編碼/ 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) 
} 
+1

我有點困惑語法這裏(只去編程幾個月)。在ID字段後面加反引號的字符串,是否只是告訴編組人員重命名字段? – leylandski

+0

它是與該字段關聯的標記,由編組引擎進行解碼。編組人員將使用「json:」之後的名稱作爲JSON密鑰。 –

相關問題