Current section
Files
Jump to
Current section
Files
src/internal/foo_json.gleam
import gleam/json
import gleam/dynamic
import internal/foo
pub fn to_json(t: foo.FooJson) {
json.object([
#("a_bool", json.bool(t.a_bool)),
#("b_int", json.int(t.b_int)),
#("c_float", json.float(t.c_float)),
#(
"d_two_tuple",
json.preprocessed_array([
json.int(t.d_two_tuple.0),
json.string(t.d_two_tuple.1),
]),
),
#("e_option_int", json.nullable(t.e_option_int, json.int)),
#("f_string_list", json.array(t.f_string_list, json.string)),
])
}
pub fn to_string(t: foo.FooJson) {
json.to_string(to_json(t))
}
pub fn get_decoder_foo() {
dynamic.decode6(
foo.Foo,
dynamic.field("a_bool", dynamic.bool),
dynamic.field("b_int", dynamic.int),
dynamic.field("c_float", dynamic.float),
dynamic.field("d_two_tuple", dynamic.tuple2(dynamic.int, dynamic.string)),
dynamic.field("e_option_int", dynamic.optional(dynamic.int)),
dynamic.field("f_string_list", dynamic.list(dynamic.string)),
)
}
pub fn from_string(json_str: String) {
json.decode(json_str, get_decoder_foo())
}