我有以下功能,我想将任意JSON数据发送到websocket连接。数据取决于发送到服务器的内容。如何在不为我要发送的每件商品创建不同结构的情况下实现此目标?不能选择结构,因为我将不得不创建许多结构(我还有很多事情要做)
我在想这样的事情:
func Register(c *websocket.Conn, m WebsocketGeneralClientMessage) {
var d RegisterData
json.Unmarshal(m.Data, &d)
if len(d.Email) < 6 || len(d.Email) > 64 {
c.WriteJSON(WebsocketGeneralServerMessage{
Type: "error", Data: map[string]interface{"text": "This is an error"}})
return
}
if len(d.Password) < 6 || len(d.Password) > 32 {
c.WriteJSON(WebsocketGeneralServerMessage{
Type: "error", Data: map[string]interface{"text": "This is another error"}})
return
}
err := checkmail.ValidateFormat(d.Email)
if err != nil {
c.WriteJSON(WebsocketGeneralServerMessage{
Type: "error", Data: map[string]interface{"text": "This is different than all the previous errors"}})
return
}
uuid, email, password, err := DB.RegisterAccount(requestEmail, requestPassword)
if err != nil {
c.WriteJSON(WebsocketGeneralServerMessage{
Type: "error", Data: map[string]interface{"text": "An error occured while saving the account to the database"}})
return
}
c.WriteJSON(WebsocketGeneralServerMessage{
Type: "success", Data: map[string]interface{"uuid": uuid}})
return
}
type WebsocketGeneralServerMessage struct {
Type string
Data map[string]interface{}
}
但是,编译器说:syntax error: unexpected literal "text", expecting method or interface name
因此看来此语法无效。在这里可以做什么?
最佳答案
这是map[string]interface{}{"text": ...
。您错过了{}
。
关于go - 将任意JSON发送到 gorilla websocket连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63981670/