Websocket sunucum JSON verilerini alacak ve dağıtımını kaldıracak. Bu veriler her zaman anahtar / değer çiftleri olan bir nesneye sarılır. Anahtar dizesi, Go sunucusuna ne tür bir değer olduğunu söyleyerek değer tanımlayıcı görevi görür. Ne tür bir değer olduğunu bilerek, JSON değerinin doğru yapı türüne göre ayrıştırılmasına geçebilirim.
Her json nesnesi birden çok anahtar / değer çifti içerebilir.
Örnek JSON:
{
"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},
"say":"Hello"
}
"encoding/json"
Bunu yapmak için paketi kullanmanın kolay bir yolu var mı ?
package main
import (
"encoding/json"
"fmt"
)
// the struct for the value of a "sendMsg"-command
type sendMsg struct {
user string
msg string
}
// The type for the value of a "say"-command
type say string
func main(){
data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`)
// This won't work because json.MapObject([]byte) doesn't exist
objmap, err := json.MapObject(data)
// This is what I wish the objmap to contain
//var objmap = map[string][]byte {
// "sendMsg": []byte(`{"user":"ANisus","msg":"Trying to send a message"}`),
// "say": []byte(`"hello"`),
//}
fmt.Printf("%v", objmap)
}
Her türlü öneri / yardım için teşekkürler!
RawMessage
. Tam olarak ihtiyacım olan şey. Hakkındasay
, aslında onu hala istiyorumjson.RawMessage
, çünkü dizge hala çözülmedi (sarmalama"
ve\n
kaçma karakterleri, vb.), Bu yüzden onu da geri alacağım.