आपको वास्तव में केवल एक ही संरचना की आवश्यकता है, और टिप्पणियों में उल्लिखित अनुसार क्षेत्र में सही टिप्पणियां वांछित परिणाम प्राप्त करेंगी। जेएसओएन कुछ बेहद विविध डेटा प्रारूप नहीं है, यह अच्छी तरह से परिभाषित और जेसन का कोई भी टुकड़ा है, इससे कोई फर्क नहीं पड़ता कि यह कितना जटिल और भ्रमित हो सकता है, यह आपके लिए काफी आसानी से और 100% सटीकता के साथ एक स्कीमा और गो में वस्तुओं में 100% सटीकता के साथ प्रदर्शित किया जा सकता है। अधिकांश अन्य ओओ प्रोग्रामिंग भाषाओं। यहां एक उदाहरण दिया गया है;
package main
import (
"fmt"
"encoding/json"
)
type Data struct {
Votes *Votes `json:"votes"`
Count string `json:"count,omitempty"`
}
type Votes struct {
OptionA string `json:"option_A"`
}
func main() {
s := `{ "votes": { "option_A": "3" } }`
data := &Data{
Votes: &Votes{},
}
err := json.Unmarshal([]byte(s), data)
fmt.Println(err)
fmt.Println(data.Votes)
s2, _ := json.Marshal(data)
fmt.Println(string(s2))
data.Count = "2"
s3, _ := json.Marshal(data)
fmt.Println(string(s3))
}
https://play.golang.org/p/ScuxESTW5i
अपने सबसे हाल ही टिप्पणी के आधार पर आप को संबोधित कर सकते हैं कि एक interface{}
का उपयोग कर गिनती के अलावा डेटा का प्रतिनिधित्व करने के लिए एक स्ट्रिंग गिनती कर रहे हैं और ब्लॉब interface{}
में shoved के बाकी होने से जो अनिवार्य रूप से कुछ भी स्वीकार करेंगे। ऐसा कहा जा रहा है कि, एक काफी सख्त प्रकार की प्रणाली के साथ एक स्थिर रूप से टाइप की गई भाषा है और दोहराने के लिए, आपकी टिप्पणियां 'यह कुछ भी हो सकती है' सच नहीं है। JSON कुछ भी नहीं हो सकता है। जेएसओएन के किसी भी टुकड़े के लिए स्कीमा है और एक स्कीमा जेएसओएन की कई विविधताओं को परिभाषित कर सकती है। मैं आपको सलाह देता हूं कि आप अपने डेटा की संरचना को समझने के बजाय समय को एक साथ हैकिंग करने के बजाय समझें कि इसे पूरी तरह से परिभाषित नहीं किया जा सकता है और शायद यह किसी के लिए काफी आसान है जो जानता है कि वे क्या कर रहे हैं।
myStruct में, व्याख्या करता है, तो मौजूद नहीं चर गिनती छोड़ देना है। इसे अपने वैरिएबल 'जेसन: "के सामने जोड़ें, omitempty" ' – Aus
मेरे पास MyStruct की परिभाषा नहीं है क्योंकि यह बिल्कुल कुछ भी हो सकती है। मुझे स्ट्रिंग का प्रतिनिधित्व करने वाले जो भी जेसन के लिए उस गिनती कुंजी को शामिल करने की आवश्यकता है। लेकिन टिप्पणी के लिए धन्यवाद। –