json.go

 1// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.
 2// Use of this source code is governed by a BSD-style
 3// license that can be found in the LICENSE file.
 4
 5package websocket
 6
 7import (
 8	"encoding/json"
 9	"io"
10)
11
12// WriteJSON writes the JSON encoding of v as a message.
13//
14// Deprecated: Use c.WriteJSON instead.
15func WriteJSON(c *Conn, v interface{}) error {
16	return c.WriteJSON(v)
17}
18
19// WriteJSON writes the JSON encoding of v as a message.
20//
21// See the documentation for encoding/json Marshal for details about the
22// conversion of Go values to JSON.
23func (c *Conn) WriteJSON(v interface{}) error {
24	w, err := c.NextWriter(TextMessage)
25	if err != nil {
26		return err
27	}
28	err1 := json.NewEncoder(w).Encode(v)
29	err2 := w.Close()
30	if err1 != nil {
31		return err1
32	}
33	return err2
34}
35
36// ReadJSON reads the next JSON-encoded message from the connection and stores
37// it in the value pointed to by v.
38//
39// Deprecated: Use c.ReadJSON instead.
40func ReadJSON(c *Conn, v interface{}) error {
41	return c.ReadJSON(v)
42}
43
44// ReadJSON reads the next JSON-encoded message from the connection and stores
45// it in the value pointed to by v.
46//
47// See the documentation for the encoding/json Unmarshal function for details
48// about the conversion of JSON to a Go value.
49func (c *Conn) ReadJSON(v interface{}) error {
50	_, r, err := c.NextReader()
51	if err != nil {
52		return err
53	}
54	err = json.NewDecoder(r).Decode(v)
55	if err == io.EOF {
56		// One value is expected in the message.
57		err = io.ErrUnexpectedEOF
58	}
59	return err
60}