aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorPeter <peterhsaxton@gmail.com>2020-07-30 09:52:36 +0100
committerPeter <peterhsaxton@gmail.com>2020-07-30 09:52:36 +0100
commita23203ac488a331cce009e153d70a5f082fed070 (patch)
tree99cd812e113219e3facf6cce7be688c0b121b877 /README.md
parentaeb7f383ef34c4be6036a25d2ae7d676f416233b (diff)
downloadgleam_json-a23203ac488a331cce009e153d70a5f082fed070.tar.gz
gleam_json-a23203ac488a331cce009e153d70a5f082fed070.zip
add documentation
Diffstat (limited to 'README.md')
-rw-r--r--README.md46
1 files changed, 34 insertions, 12 deletions
diff --git a/README.md b/README.md
index 98ed818..218a4fd 100644
--- a/README.md
+++ b/README.md
@@ -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, [