kata_json
kata_json — JSON adapter for kata.
Installation
gleam add kata_json
Quick Start
import kata/schema
import kata/refine
import kata_json
pub type User {
User(name: String, email: String, age: Int)
}
fn user_schema() -> schema.Schema(User) {
use name <- schema.field("name", schema.string() |> refine.min_length(1), fn(u: User) { u.name })
use email <- schema.field("email", schema.string(), fn(u: User) { u.email })
use age <- schema.field("age", schema.int() |> refine.min(0), fn(u: User) { u.age })
schema.done(User(name:, email:, age:))
}
// Decode from JSON
let assert Ok(user) = kata_json.decode_json(user_schema(), "{\"name\":\"Alice\",\"email\":\"a@b.com\",\"age\":30}")
// Encode to JSON
let json = kata_json.encode_json(user_schema(), User("Alice", "a@b.com", 30))
// -> "{\"name\":\"Alice\",\"email\":\"a@b.com\",\"age\":30}"
API
parse(input: String) -> Result(Value, String)— Parse JSON to Value (schema-independent)serialize(v: Value) -> String— Serialize Value to JSON string (schema-independent)decode_json(schema, input) -> Result(a, JsonError)— Decode JSON using a schemaencode_json(schema, value) -> String— Encode a value to JSON using a schema
Development
gleam test # Run the tests