mirror of
https://github.com/bearlanguageorg/bear.git
synced 2026-08-26 16:47:01 +00:00
47 lines
1.4 KiB
Plaintext
47 lines
1.4 KiB
Plaintext
// json.vr — the stdlib JSON + formatting builtins.
|
|
// vr run examples/json.vr
|
|
|
|
fn main() {
|
|
// --- encode: structs -> objects, arrays -> arrays, none -> null ---
|
|
let user = {
|
|
name: "amy",
|
|
age: 30,
|
|
active: 1,
|
|
score: 87.5,
|
|
tags: ["admin", "beta"],
|
|
meta: { last_seen: none }
|
|
}
|
|
println(json_encode(user))
|
|
// {"name":"amy","age":30,"active":1,"score":87.5,"tags":["admin","beta"],"meta":{"last_seen":null}}
|
|
|
|
// --- decode: objects become structs, numbers become ints when integral ---
|
|
let parsed = json_decode("{\"name\": \"bob\", \"age\": 42, \"scores\": [1, 2.5, 3]}")
|
|
println(parsed.name)
|
|
println(parsed.age)
|
|
println(parsed.scores[1])
|
|
println(json_encode(parsed))
|
|
|
|
// null decodes to `none` — test with ==
|
|
let maybe = json_decode("{\"value\": null}")
|
|
if maybe.value == none {
|
|
println("field is none")
|
|
}
|
|
|
|
// --- format: printf-style ---
|
|
println(format(3.14159, "%.2f")) // 3.14
|
|
println(format(42, "%05d")) // 00042
|
|
println(format(255, "%X")) // FF
|
|
println(format("right", "%10s")) // right
|
|
println(format("left", "%-10s") + "|") // left |
|
|
|
|
// --- string tools ---
|
|
println("hello world".replace("l", "L"))
|
|
println(len(split_lines("a\nb\nc")))
|
|
println(pad_left("42", 5) + "|")
|
|
println("ab".repeat(3))
|
|
|
|
// --- json + formatting together ---
|
|
let total = 1234.5
|
|
println("total: " + format(total, "%.2f"))
|
|
}
|