gleam/json
Types
pub type DecodeError {
UnexpectedEndOfInput
UnexpectedByte(byte: String, position: Int)
UnexpectedSequence(byte: String, position: Int)
UnexpectedFormat(List(dynamic.DecodeError))
}
Constructors
-
UnexpectedEndOfInput
-
UnexpectedByte(byte: String, position: Int)
-
UnexpectedSequence(byte: String, position: Int)
-
UnexpectedFormat(List(dynamic.DecodeError))
Functions
pub fn array(
from entries: List(a),
of inner_type: fn(a) -> Json,
) -> Json
Encode a list into a JSON array.
Examples
> to_string(array([1, 2, 3], of: int))
"[1, 2, 3]"
pub fn bool(input: Bool) -> Json
Encode a bool into JSON.
Examples
> to_string(bool(False))
"false"
pub fn decode(
from json: String,
using decoder: fn(Dynamic) -> Result(a, List(DecodeError)),
) -> Result(a, gleam/json.DecodeError)
Decode a JSON string into dynamically typed data which can be decoded into
typed data with the gleam/dynamic
module.
Warning
On the Nix target, this function will crash Nix evaluation if an invalid JSON string is given, due to current limitations. Please ensure the given JSON is valid beforehand.
Examples
> decode("[1,2,3]", dynamic.list(of: dynamic.int))
Ok([1, 2, 3])
> decode("[", dynamic.list(of: dynamic.int))
Error(UnexpectedEndOfInput)
> decode("1", dynamic.string)
Error(UnexpectedFormat([dynamic.DecodeError("String", "Int", [])]))
pub fn decode_bits(
from json: BitArray,
using decoder: fn(Dynamic) -> Result(a, List(DecodeError)),
) -> Result(a, gleam/json.DecodeError)
Decode a JSON bit string into dynamically typed data which can be decoded
into typed data with the gleam/dynamic
module.
Warning
On the Nix target, this function will interrupt evaluation if an invalid JSON string is given, due to current limitations. Please ensure the given JSON is valid beforehand.
Examples
> decode_bits(<<"[1,2,3]">>, dynamic.list(of: dynamic.int))
Ok([1, 2, 3])
> decode_bits(<<"[">>, dynamic.list(of: dynamic.int))
Error(UnexpectedEndOfInput)
> decode_bits("<<1">>, dynamic.string)
Error(UnexpectedFormat([dynamic.DecodeError("String", "Int", [])]))
pub fn float(input: Float) -> Json
Encode an float into JSON.
Examples
> to_string(float(4.7))
"4.7"
pub fn nullable(
from input: Option(a),
of inner_type: fn(a) -> Json,
) -> Json
Encode an optional value into JSON, using null if it the None
variant.
Examples
> to_string(nullable(Some(50), of: int))
"50"
> to_string(nullable(None, of: int))
"null"
pub fn object(entries: List(#(String, Json))) -> Json
Encode a list of key-value pairs into a JSON object.
Examples
> to_string(object([
#("game", string("Pac-Man")),
#("score", int(3333360)),
]))
"{\"game\":\"Pac-Mac\",\"score\":3333360}"
pub fn preprocessed_array(from: List(Json)) -> Json
Encode a list of JSON values into a JSON array.
Examples
> to_string(preprocessed_array([int(1), float(2.0), string("3")]))
"[1, 2.0, \"3\"]"
pub fn string(input: String) -> Json
Encode a string into JSON, using normal JSON escaping.
Examples
> to_string("Hello!")
"\"Hello!\""
pub fn to_string(json: Json) -> String
Convert a JSON value into a string.
Where possible prefer the to_string_builder
function as it is faster than
this function, and BEAM VM IO is optimised for sending StringBuilder
data.
Examples
> to_string(array([1, 2, 3], of: int))
"[1,2,3]"
pub fn to_string_builder(json: Json) -> StringBuilder
Convert a JSON value into a string builder.
Where possible prefer this function to the to_string
function as it is
slower than this function, and BEAM VM IO is optimised for sending
StringBuilder
data.
Examples
> to_string_builder(array([1, 2, 3], of: int))
string_builder.from_string("[1,2,3]")