मैं एक वस्तु है कि एक कुछ इंटरफेस Entity
की एक सरणी शामिल deserialise करना चाहते हैं की एक JSON सारणी:unmarshal विषम structs
type Result struct {
Foo int;
Bar []Entity;
};
Entity
एक अंतरफलक है कि struct प्रकार की एक संख्या से कार्यान्वित किया जाता है है। JSON डेटा प्रत्येक इकाई में "प्रकार" फ़ील्ड के साथ संरचना प्रकार की पहचान करता है। जैसे
{"type":"t1","field1":1}
{"type":"t2","field2":2,"field3":3}
मैं कैसे इस तरह से कि इसे सही ढंग से सरणी भरता में Result
प्रकार deserialising के बारे में जाना होगा।
Result
परUnmarshalJSON
लागू: मैं क्या देख सकते हैं से, मैं करने के लिए है।- पार्स एक
[]*json.RawMessage
रूपBar
। - पार्स
map[string]interface{}
के रूप में प्रत्येक कच्चे संदेश। - चेक "प्रकार" कच्चे संदेश में क्षेत्र।
- उपयुक्त प्रकार की एक संरचना बनाएँ।
- कच्चे संदेश फिर, अभी बनाया struct में इस समय पार्स।
यह सब बहुत कठिन और उबाऊ लगता है। क्या ऐसा करने के लिए इससे अच्छा तरीका है? या मैं इसे पीछे की ओर कर रहा हूं, और विषम वस्तुओं की एक सरणी को संभालने के लिए एक और कैननिक विधि है?
मैं एक "संघ" संरचना के साथ जा रहा था। यह गंदा महसूस किया, लेकिन अंत में मुक्त था। –