JSONStream
Small but useful wrapper above erlang jsx to stream
json elements from an Elixir binary stream.
Usage
stream_path = ["data",1,"actions"]
{actions_stream,doc_fun} = File.stream!("example.json",[],2048)
|> JSONStream.stream(stream_path)stream_path describe the JSON path (string for map key and integer
for array index), to the Array/Object you want to stream Element/{key,value}.
actions_stream is the stream of element in case stream_path
targets an array, or a stream of {k,v} in case stream_path
targets a map.
doc_fun is a function ()->doc where doc will be the whole
parsed json document, but without the elements from the stream. It
will be accessible only after the whole stream will be runned.
Else, doc_fun.()-> :stream_not_finished.
Installation
The package can be installed as:
Add json_stream to your list of dependencies in
mix.exs:def deps do
[{:json_stream, "~> 0.0.1"}]end
Ensure json_stream is started before your application:
def application do
[applications: [:json_stream]]end