Задать вопрос
hitakiri
@hitakiri

Как корректно передать данные json через websoket в golang?

Есть строка json данных записанная в sqlite как TEXT.
Данные передаются через gorilla-websocket. В составе структуры.
type SourseText struct {
 	id  int         `json:"id"`
 	sText  string         `json:"stext, omitempty"`
}
....
sText := '{"channel":"buu","name":"john", "msg":"doe"}'
....
err = conn.WriteJSON(SourseText)


Проблема заключается в том, что данные при передаче экранируются:
"{"id":{"1"},{\"channel\":\"buu\",\"name\":\"john\", \"msg\":\"doe\"}}"


Способа передать без танцов с бубном, не нашел. Прошу помощи.
  • Вопрос задан
  • 607 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
WriteJSON ждёт на вход структуру, которую потом маршалит в JSON. У вас JSON уже замаршален, поэтому используйте метод WriteMessage. Первым аргументом там идёт тип сообщения, вам нужен binary, вторым идёт непосредственно JSON в виде массива байт. Строку можно привести к массиву байт вот так: []byte(sText)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
WriteJSON как бы намекает, а вы ему JSON уже готовый даёте.
Получается двойной JSON.

https://github.com/gorilla/websocket/blob/2d1e4548...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы