Json ile kodlama/kod çözme yaparken özel yapıları serileştirmenin bir yolu var mı? Golang özel JSON serileştirme (json için gob.register() öğesine eşdeğer bir şey var mı?)
UDP üzerinden gönderilen ediliyor farklı özel yapılar (10 vardır benim gerçek kodda) Eğer 3 söylüyorlar ve kodlama için json kullanın: Eğer bilmek istiyorum alıcı olarak ucundatype a struct {
Id int
Data msgInfo
}
type b struct {
Id int
Data msgInfo
Other metaInfo
}
type c struct {
Other metaInfo
}
Elde edilen yapı, a, b veya c tipindeydi, bu nedenle örneğin belirli bir kanala geçirilebilir. bahriyeli ile
type msgtype reflect.Type
.
.
nrOfBytes, err := udpConn.Read(recievedBytes)
if err != nil {...}
var msg interface{}
err = json.Unmarshal(recievedBytes[0:nrOfBytes], &msg)
if err != nil {...}
u := reflect.ValueOf(msg)
msgType := u.Type()
fmt.Printf("msg is of type: %s\n", msgType)
bu kolayca türlerini kayıt yapılır, ama json o UDP üzerinden iletişim var gibi görerek kullanmak zorunda olduğu, bu nedenle özel yapılar seri hale getirmek zaten var mı? Ben baskı
msg is of type: a
olmak istiyorum ama sadece yorumunuza
msg is of type: map[string]interface {}
için bu oyun örneğe bakın:
Örneğin (hata denetimi atlayarak)? Bir tür ile son bir noktaya dikkat etmenizi öneririm, böylece ne beklediğinizi zaten biliyorsunuzdur. O zaman bir REST API var diyelim/her şey POST için bir yapılandırma – nvcnvn
ayrıştırmalıyım ne ben paketlenmiş denilen bir tür "Packet" gönderdiğimi paketlemeyi denedim, bu yüzden sadece bir "Veri" ile bu tür gönderilen ve aldım "özel yapıyı tutan alan. Ne yazık ki hiçbir şey değişmedi –