README.md

# gleam_json

A Gleam library for encoding decoding JSON.

### Encoding

```rust
import gleam/json

let data = json.object([
  tuple("foo", json.string("bar")),
  tuple("values", json.list([json.int(1), json.int(2)])),
  tuple("nope", json.null())
])
json.encode(data)
// {"foo":"bar","nope":null,"values":[1,2]}
```

### Decoding

Note: JSON is a dynamic data structure.
The best way to manage decode JSON data is using `gleam/dynamic`.

```rust
import gleam/json

let encoded =
  "{\"foo\":\"bar\",\"nope\":null,\"values\":[1,2]}"

assert Ok(data) = json.decode(encoded)
let data = dynamic.from(data)

assert Ok(foo) = dynamic.field(data, "foo")
assert Ok("bar") = dynamic.string(foo)

assert Ok(values) = dynamic.field(data, "values")
assert Ok([1, 2]) = dynamic.typed_list(values, dynamic.int)

assert Ok(nope) = dynamic.field(data, "nope")
assert Ok(_) = dynamic.atom(nope)
```

## Installation

This package can be installed by adding `gleam_json` to your `rebar.config` dependencies:

```erlang
{deps, [
    gleam_json
]}.
```