कैसे एक संरचना में कई नाम टैग को परिभाषित करने के लिए


137

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

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

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

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

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

जवाबों:


238

यह reflectपैकेज के प्रलेखन में कहता है :

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

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

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

5
इसके अलावा, सुनिश्चित करें कि यह केवल एक स्थान से अलग किया गया है, एक टैब द्वारा नहीं। सीएफ stackoverflow.com/questions/20215510/…
ग्रीनकार्बन

68

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

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

गलत

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"`
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.