2013-09-05 3 views
81

मैं एक मोंगो डेटाबेस से किसी आइटम प्राप्त करने की आवश्यकता में एक से अधिक नाम टैग को परिभाषित करने, इसलिए मैं परिभाषित इसकैसे एक struct

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

की तरह एक struct अब मैं भी JSON करने के लिए इसे सांकेतिक शब्दों में बदलना करने की जरूरत है, लेकिन यह encodes खेतों को अपरकेस के रूप में (मुझे पृष्ठ आईडी के बजाय पेजआईडी मिलता है) इसलिए मुझे जेएसओएन के लिए फील्ड टैग को परिभाषित करने की भी आवश्यकता है। मैं कुछ इस तरह की कोशिश की, लेकिन यह काम नहीं किया:

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

तो यह कैसे किया जा सकता है, एक struct में एक से अधिक नाम टैग को परिभाषित?

उत्तर

135

यह reflect पैकेज के दस्तावेज में कहते हैं:

परंपरा के मुताबिक, टैग तार वैकल्पिक रूप से अंतरिक्ष से अलग की गई कुंजी का एक संयोजन कर रहे हैं: "मूल्य" जोड़े। प्रत्येक कुंजी एक गैर-खाली स्ट्रिंग है जिसमें अंतरिक्ष (यू +0020 ''), उद्धरण (यू +0022 '' '), और कोलन (यू +003 ए': ') के अलावा गैर-नियंत्रण वर्ण शामिल हैं। प्रत्येक मान उद्धृत किया गया है यू + 0022 '' 'वर्णों का प्रयोग करके और स्ट्रिंग अक्षर वाक्यविन्यास जाओ।

आपको टैग स्ट्रिंग विभाजक के रूप में अल्पविराम के बजाय स्थान का उपयोग करने की आवश्यकता है।

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

इसके अलावा, यकीन है कि यह, एक रिक्ति से केवल अलग किया जाता है एक टैब से नहीं बनाते हैं। सीएफ https://stackoverflow.com/questions/20215510/cannot-retrieve-id-value-using-mgo-with-golang – GreenRaccoon23

+2

'जाओ vet' इसे पकड़ नहीं लेता है। https://github.com/golang/go/issues/14466 – kevpie

42

स्वीकृत उत्तर के लिए धन्यवाद।

नीचे मेरे जैसे आलसी लोगों के लिए है।

गलत

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

सही

type Page struct { 
    PageId string     `bson:"pageId" json:"pageId"` 
    Meta map[string]interface{} `bson:"meta" json:"pageId"` 
} 
संबंधित मुद्दे