Browse Source

initial commit

master
Brett Langdon 10 years ago
commit
139f30d960
3 changed files with 73 additions and 0 deletions
  1. +38
    -0
      cmd/jsonstream.go
  2. +1
    -0
      jsonstream.go
  3. +34
    -0
      reader.go

+ 38
- 0
cmd/jsonstream.go View File

@ -0,0 +1,38 @@
package main
import (
"encoding/json"
"flag"
"fmt"
"io"
"os"
"github.com/brettlangdon/jsonstream"
)
var input io.Reader
var inputFile string
func init() {
flag.StringVar(&inputFile, "file", nil, "")
}
func main() {
reader := jsonstream.NewReader(os.Stdin)
for {
data, err := reader.ReadLine()
if err == io.EOF {
break
}
if err != nil {
panic(err)
}
var output []byte
output, err = json.Marshal(data)
if err != nil {
panic(err)
}
fmt.Printf("%s\r\n", output)
}
}

+ 1
- 0
jsonstream.go View File

@ -0,0 +1 @@
package jsonstream

+ 34
- 0
reader.go View File

@ -0,0 +1,34 @@
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
}

Loading…
Cancel
Save