Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

jsparser

jsparser is a json parser for GO. It is efficient to parse large json data with streaming fashion.

Usage

{
  "books": [{
      "title": "The Iliad and The Odyssey",
      "price": 12.95,
      "comments": [{
        "rating": 4,
        "comment": "Best translation I've read."
      }, {
        "rating": 2,
        "comment": "I like other versions better."
      }]
    },
    {
      "title": "Anthology of World Literature",
      "price": 24.95,
      "comments": [{
        "rating": 4,
        "comment": "Excellent overview of world literature."
      }, {
        "rating": 3,
        "comment": "Needs more modern literature."
      }]
    }
  ]
}

Stream over books

f, _ := os.Open("input.json")
br := bufio.NewReaderSize(f,65536)
parser := jsparser.NewJSONParser(br, "books")

for json:= range parser.Stream() {
		fmt.Println(json.ObjectVals["title"])
		fmt.Println(json.ObjectVals["price"])
		fmt.Println(json.ObjectVals["comments"].(*jsparser.JSON).ArrayVals[0].(*jsparser.JSON).ObjectVals["rating"])
}

// for relatively small size json. get all the results as slice
for json:= range parser.Parse() {
}

Skip props for efficiency

parser := pr.NewJSONParser(br, "books").SkipProps([]string{"comments", "price"})  

Error handling

for json:= range parser.Stream() {
    if json.Err !=nil {
      // handle error
    }
}

Progress of parsing

// total byte read to calculate the progress of parsing
parser.TotalReadSize

If you are interested check also xml parser which works similarly.

About

JSON Stream parser for Go

Topics

Resources

Stars

24 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages