Bir yapıda birden çok ad etiketi nasıl tanımlanır


137

Ben bir mongo veritabanından bir öğe almak gerekiyor, bu yüzden böyle bir yapı tanımladı

type Page struct {
    PageId string                 `bson:"pageId"`
    Meta   map[string]interface{} `bson:"meta"`
}

Şimdi de JSON kodlamak gerekir, ancak alanları büyük harf olarak kodlar (i PageId yerine PageId yerine) böylece JSON için alan etiketleri tanımlamak gerekir. Böyle bir şey denedim ama işe yaramadı:

type Page struct {
    PageId string                 `bson:"pageId",json:"pageId"`
    Meta   map[string]interface{} `bson:"meta",json:"pageId"`
}

Peki bu nasıl yapılabilir, bir yapıda birden fazla ad etiketi tanımlayın?

Yanıtlar:


239

reflectPaketin belgelerinde şöyle yazıyor :

Kural olarak, etiket dizeleri isteğe bağlı olarak boşlukla ayrılmış anahtar: "değer" çiftlerinin bir birleşimidir. Her anahtar boşluk (U + 0020 ''), tırnak işareti (U + 0022 '"') ve iki nokta üst üste (U + 003A ':') dışındaki kontrol dışı karakterlerden oluşan boş olmayan bir dizedir. U + 0022 '' 'karakterlerini ve Go dizesi değişmez sözdizimini kullanarak.

Yapmanız gereken, etiket dizesi ayırıcısı olarak virgül yerine boşluk kullanmaktır.

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"meta"`
}

5
Ayrıca, sekmeyle değil, yalnızca boşlukla ayrıldığından emin olun. bakınız stackoverflow.com/questions/20215510/…
GreenRaccoon23

68

Kabul edilen cevap için teşekkürler.

Aşağıda sadece benim gibi tembel insanlar içindir.

YANLIŞ

type Page struct {
    PageId string                 `bson:"pageId",json:"pageId"`
    Meta   map[string]interface{} `bson:"meta",json:"pageId"`
}

DOĞRU

type Page struct {
    PageId string                 `bson:"pageId" json:"pageId"`
    Meta   map[string]interface{} `bson:"meta" json:"pageId"`
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.