diff options
author | Peter <peterhsaxton@gmail.com> | 2020-07-30 09:52:36 +0100 |
---|---|---|
committer | Peter <peterhsaxton@gmail.com> | 2020-07-30 09:52:36 +0100 |
commit | a23203ac488a331cce009e153d70a5f082fed070 (patch) | |
tree | 99cd812e113219e3facf6cce7be688c0b121b877 | |
parent | aeb7f383ef34c4be6036a25d2ae7d676f416233b (diff) | |
download | gleam_json-a23203ac488a331cce009e153d70a5f082fed070.tar.gz gleam_json-a23203ac488a331cce009e153d70a5f082fed070.zip |
add documentation
-rw-r--r-- | README.md | 46 |
1 files changed, 34 insertions, 12 deletions
@@ -1,26 +1,48 @@ # gleam_json -A Gleam program +A Gleam library for encoding decoding JSON. +### Encoding -## Quick start +```rust +import gleam/json -```sh -# Build the project -rebar3 compile +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]} +``` -# Run the eunit tests -rebar3 eunit +### Decoding -# Run the Erlang REPL -rebar3 shell -``` +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 -If [available in Hex](https://www.rebar3.org/docs/dependencies#section-declaring-dependencies) -this package can be installed by adding `gleam_json` to your `rebar.config` dependencies: +This package can be installed by adding `gleam_json` to your `rebar.config` dependencies: ```erlang {deps, [ |