JSON5 parser and stringifier for MoonBit
This document was generated with AI assistance and then reviewed/edited for this project. Contributions are welcome via PRs, and AI-assisted review may be used during the review process.
///|
let value = @json5.parse("{foo: 'bar'}")///|
test "readme parse json5 value" {
let value = @json5.parse("{foo: 'bar', nums: [1, 2,],}")
guard value is @json5.Object(obj)
assert_true(obj.get("foo") is Some(_))
}///|
test "readme stringify json5 value" {
let value = @json5.parse("{ok: true}")
let text = @json5.stringify(value)
// valid identifiers are written unquoted in JSON5
assert_true(text.contains("ok:true"))
}///|
test "readme parse json5 to json" {
let json = @json5.parse_json("{foo: [1, true, 'x']}")
@json.json_inspect(json, content={ "foo": [1, true, "x"] })
}///|
test "readme stringify json" {
let text = @json5.stringify_json({ "name": "moonbit", "v": 1 })
// valid identifiers are written unquoted in JSON5
assert_true(text.contains("name:\"moonbit\""))
}moon testpub enum Json5Value {
Null
True
False
Number(Double)
String(String)
Array(Array[Json5Value])
Object(Map[String, Json5Value])
} derive(Eq, Debug)test {
let value = @json5.parse("{foo: [1, true, 'x']}")
guard value is Object(obj)
assert_true(obj.get("foo") is Some(Array(_)))
}impl Show for Json5Valueimpl ToJson for Json5Valueimpl FromJson for Json5Valuetest {
let json : Json = { "name": "moonbit", "ok": true }
let value : @json5.Json5Value = @json.from_json(json)
guard value is Object(obj)
assert_true(obj.get("name") is Some(_))
}test {
let value = @json5.parse("{foo: 'bar', nums: [1, 2,],}")
guard value is Object(obj)
assert_true(obj.get("foo") is Some(_))
}test {
let value = @json5.parse("{foo: 'bar'}")
let text = @json5.stringify(value)
assert_true(text.contains("foo:\"bar\""))
}test {
let value = @json5.parse("{foo: [1, true]}")
let text = @json5.stringify_pretty(value)
assert_true(text.contains("foo: [\n"))
}Install
Download zipJSON5 parser and stringifier for MoonBit