# `Arrow.Json.Reader`

Parses Arrow integration test JSON into the in-memory data model.

The JSON form is canonical: every value is a `0`/`1` int (validity), a number,
or a string. Integer-typed columns that don't fit in a JSON number losslessly
(Int64, UInt64, Date64, Timestamp) are encoded as decimal strings — this
reader accepts both. Binary columns are hex-encoded strings.

# `read`

```elixir
@spec read(map()) ::
  {:ok,
   %{
     schema: Arrow.Schema.t(),
     dictionaries: %{optional(non_neg_integer()) =&gt; Arrow.Array.t()},
     batches: [Arrow.RecordBatch.t()]
   }}
  | {:error, Arrow.DecodeError.t()}
```

Parses a decoded JSON map into `{:ok, %{schema:, batches:}}` or
`{:error, %Arrow.DecodeError{}}`.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
