
A lightweight JSON parsing library written in pure Mojo
README
A lightweight JSON parsing library for Mojo.
Use the parse function to parse a JSON value from a string. It accepts a
ParseOptions struct as a parameter to alter parsing behaviour.
from emberjson import parse
struct ParseOptions:
    # ignore unicode for a small performance boost
    var ignore_unicode: Bool
...
var json = parse[ParseOptions(ignore_unicode=True)](r'["🔥"]')EmberJSON supports decoding escaped unicode characters.
print(parse(r'["🔥"]')) # prints '["🔥"]'Use the to_string function to convert a JSON struct to its string representation.
It accepts a parameter to control whether to pretty print the value.
The JSON struct also conforms to the Stringable, Representable and Writable
traits.
from emberjson import parse, to_string
fn main() raises:
    var json = parse('{"key": 123}')
    
    print(to_string(json)) # prints {"key":123}
    print(to_string[pretty=True](json))
# prints:
#{
#   "key": 123
#}JSON is the top level type for a document. It can contain either
an Object or Array.
Value is used to wrap the various possible primitives that an object or
array can contain, which are Int, Float64, String, Bool, Object,
Array, and Null.
from emberjson import *
var json = parse('{"key": 123}')
# check inner type
print(json.is_object()) # prints True
# dict style access
print(json.object()["key"].int()) # prints 123
# array
var array = parse('[123, 4.5, "string", True, null]').array()
# array style access
print(array[3].bool()) # prints True
# equality checks
print(array[4] == Null()) # prints True
# None converts implicitly to Null
assert_equal(array[4], Value(None))
# Implicit ctors for Value
var v: Value = "some string"
# Convert Array and Dict back to stdlib types
# These are consuming actions so the original Array/Object will be moved
var arr = Array(123, False)
var l = arr.to_list()
var ob = Object()
var d = ob.to_dict()DETAILS