WriteToJSON translates MessagePack from 'r' and writes it as JSON to 'w' until the underlying reader returns io.EOF. It returns the number of bytes written, and an error if it stopped before EOF.
(w io.Writer)
| 61 | // JSON to 'w' until the underlying reader returns io.EOF. It returns |
| 62 | // the number of bytes written, and an error if it stopped before EOF. |
| 63 | func (m *Reader) WriteToJSON(w io.Writer) (n int64, err error) { |
| 64 | var j jsWriter |
| 65 | var bf *bufio.Writer |
| 66 | if jsw, ok := w.(jsWriter); ok { |
| 67 | j = jsw |
| 68 | } else { |
| 69 | bf = bufio.NewWriter(w) |
| 70 | j = bf |
| 71 | } |
| 72 | var nn int |
| 73 | for err == nil { |
| 74 | nn, err = rwNext(j, m) |
| 75 | n += int64(nn) |
| 76 | } |
| 77 | if err != io.EOF { |
| 78 | if bf != nil { |
| 79 | bf.Flush() |
| 80 | } |
| 81 | return |
| 82 | } |
| 83 | err = nil |
| 84 | if bf != nil { |
| 85 | err = bf.Flush() |
| 86 | } |
| 87 | return |
| 88 | } |
| 89 | |
| 90 | func rwNext(w jsWriter, src *Reader) (int, error) { |
| 91 | t, err := src.NextType() |