Как упорядочить данные и отправить в websocket?

#go

#Вперед

Вопрос:

После отладки приведенного ниже кода на стороне сервера:

     type myStruct struct {
        key   string
        value string
    }

    key, value := gen()
    data := myStruct{key, value}
    myJSON, err := json.Marshal(data)
    err = conn.WriteMessage(websocket.TextMessage, myJSON)
  

gen() заполняет key и value строками

myJSON Шоу:

введите описание изображения здесь

После записи myJSON в веб-сокет на стороне клиента принимается пустой json:

             ws.onmessage = function (evt)
            {
                console.log(evt.data)

            };
  

введите описание изображения здесь

Почему conn.WriteMessage() не передаются данные ( myJSON ) на сторону клиента?

Комментарии:

1. Ваши поля не экспортированы. Экспортированные поля имеют первую букву с заглавной буквы

2. @zerkms Нужно ли мне экспортировать ( data.key amp; data.value ) по той причине, что данные находятся в проводном режиме?

3. Упорядочиваются только экспортированные поля, независимо от того, как вы используете эти данные. Ваш myJSON — пустой объект JSON.

4. «Значения структуры кодируются как объекты JSON. Каждое экспортированное поле структуры становится членом объекта, используя имя поля в качестве ключа объекта, если только поле не опущено по одной из причин, приведенных ниже.» golang.org/pkg/encoding/json/#Marshal

5. «myJSON показывает … len=2» — это ваш пустой объект. Именно то, что получено на другом конце.

Ответ №1:

@zerkms прав, у вас должно быть что-то вроде этого:

 type myStruct struct {
    Key   string `json:"key"`
    Value string `json:"value"`
}

key, value := gen()
data := myStruct{Key: key, Value: value}
myJSON, err := json.Marshal(data)
if err != nil {
    // error handling
}
err = conn.WriteMessage(websocket.TextMessage, myJSON)
if err != nil {
    // error handling
}
  

Вы можете найти простой пример здесь.