1
0
Fork 0

Add readme

This commit is contained in:
Gregory Eremin 2015-02-26 18:32:29 +07:00
parent f15ee2d6d7
commit ca9d198b6b
2 changed files with 52 additions and 1 deletions

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
main
kifflom
big*.json

51
README.md Normal file
View File

@ -0,0 +1,51 @@
# Kifflom!
Kifflom is a (streaming) JSON parser that does not build any structures from the document,
but returns specific values matched by given selectors instead.
## Example
Lets take this JSON description of fruits.
```json
{
"prices": {
"apple": 25,
"banana": 10,
"peach": 40.5,
"pomelo": null
},
"bananas": [
{"length": 13, "weight": 5},
{"length": 18, "weight": 8},!
{"length": 13, "weight": 4}
]
}
```
In order to get the weight of the first banana and prices for all the fruits
we can use such a command:
```bash
cat test.json | kifflom -s ".bananas#0.weight .prices.*"
# .prices.* 25
# .prices.* 10
# .prices.* 40.5
# .prices.* <nil>
#
# Parse error! Yay!
# [010:036] (Error: Unexpected symbol: '!')
# .bananas#0.weight 5
```
## Performance
As you can learn from benchmarks described below, kifflom's lexer itself is
roughly 8.5 times slower than the standard JSON parser on any amount of data.
You can benefit from low and constant memory usage, although I don't think you would.
```bash
# Running lexer tests and benchmarks
cd lexer/
go test -bench .
```