Utility to interact with a stream of newline delimited JSON
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

34 lines
517 B

package jsonstream
import (
"bufio"
"encoding/json"
"errors"
"io"
)
type Reader struct {
buffer *bufio.Reader
}
func NewReader(r io.Reader) *Reader {
return &Reader{
buffer: bufio.NewReader(r),
}
}
func (reader *Reader) ReadLine() (data interface{}, err error) {
var line []byte
var isPrefix bool
line, isPrefix, err = reader.buffer.ReadLine()
if isPrefix {
err = errors.New("Line exceeds the length of the buffer")
}
if err == nil {
err = json.Unmarshal(line, &data)
}
return data, err
}