2014-07-19 15 views
17

मैं इस पुस्तकालय का उपयोग couchDB (क्लाउडेंट विशिष्ट होने के लिए) "github.com/mikebell-org/go-couchdb" तक पहुंचने के लिए कर रहा हूं और मैंने एक समस्या देखी है।गोलांग - संरचना क्षेत्रों में राजधानियां

जब मैं डेटाबेस में फ़ाइल जोड़ने और संरचना में पास करने के लिए जाता हूं, केवल पूंजी पत्र से शुरू होने वाली संरचना के फ़ील्ड जोड़े जाते हैं।

उदाहरण

type Person struct { 
    name string 
    Age int 
} 

func main() { 
    db, _ := couchdb.Database(host, database, username, password) 
    joe := Person{ 
     name: "mike", 
     Age: 190, 
    } 
    m, _ := db.PostDocument(joe) 
} 

इस मामले में के लिए, केवल "उम्र" क्षेत्र अद्यतन और मेरे डेटाबेस में डाला गया।

मैं भी एक अन्य मामले में इस समस्या को देखा है - जब मैं कुछ इस तरह कर रहा हूँ: इस मामले में

type Sample struct { 
    Name string 
    age int 
} 


joe := Sample{ 
    Name: "xx", 
    age: 23, 
} 

byt, _ := json.Marshal(joe) 

post_data := strings.NewReader(string(byt)) 
fmt.Println(post_data) 

, केवल नाम मुद्रित किया जाएगा:

output : &{{"Name":"xx"} 0 -1} 

क्यों क्या यह? और यदि मैं लोअरकेस के साथ एक फ़ील्ड रखना चाहता हूं और डेटाबेस के अंदर होना चाहता हूं, तो क्या यह संभव है?

उत्तर

19

यह curent पैकेज के बाहर दिखाई दे रहा है, क्योंकि केवल बड़े अक्षर से शुरू होने वाले क्षेत्रों में निर्यात किया जाता, या दूसरे शब्दों में (और json पैकेज में इस मामले में)। http://golang.org/ref/spec#Exported_identifiers

फिर भी, आप json फ़ील्ड का उपयोग कर क्या कहा जाता है "टैग" एक पूंजी पत्र के साथ कोई शुरू कर unmarshall कर सकते हैं:

यहाँ विनिर्देशों इस की चर्चा करते हुए का हिस्सा है। json पैकेज के साथ, इस का उपयोग करने के वाक्य रचना है:

type Sample struct { 
    Name string `json:"name"` 
    Age int `json:"age"` 
} 

इस बारे में अधिक जानकारी के लिए documentation का संदर्भ लें।

+0

आपको बहुत बहुत धन्यवाद! –

4

जेसन पैकेज केवल स्ट्रिंगफ़ी फ़ील्ड पूंजी पत्र से शुरू होता है। देख http://golang.org/pkg/encoding/json/

आप इस तरह struct को परिभाषित की जरूरत है:

type Sample struct{ 
    Name string `json:"name"` 
    Age int `json:"age"` 
} 
संबंधित मुद्दे