diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/json.gleam | 15 | ||||
-rw-r--r-- | src/gleam/json/types.gleam | 13 |
2 files changed, 28 insertions, 0 deletions
diff --git a/src/gleam/json.gleam b/src/gleam/json.gleam new file mode 100644 index 0000000..e1e465b --- /dev/null +++ b/src/gleam/json.gleam @@ -0,0 +1,15 @@ +import gleam/dynamic.{Dynamic} +import gleam/result +import gleam/json/types + +pub type Json = types.Json + +external fn jsone_decode(String) -> types.DecodeResult = + "jsone_decode" "decode" + +pub fn decode(encoded: String) -> Result(Json, Dynamic) { + case jsone_decode(encoded) { + types.Ok(json, _rest) -> Ok(json) + types.Error(types.Badarg(reason)) -> Error(reason) + } +} diff --git a/src/gleam/json/types.gleam b/src/gleam/json/types.gleam new file mode 100644 index 0000000..2e6c78f --- /dev/null +++ b/src/gleam/json/types.gleam @@ -0,0 +1,13 @@ +import gleam/dynamic.{Dynamic} + + +pub external type Json + +pub type Failure { + Badarg(Dynamic) +} + +pub type DecodeResult { + Ok(Json, String) + Error(Failure) +} |