JSON File Handling
The klyn.io.json package serializes Klyn objects, maps, lists, strings, numbers,
booleans, and null values to JSON, and parses JSON back into typed Klyn values.
import klyn.collections
import klyn.io
import klyn.io.json
JSON.stringify returns compact JSON by default and can also write directly to a
file path or writer.
import klyn.io.json
config = {"fullscreen": true, "theme": "dark"}
compact = JSON.stringify(config, spaces=false)
pretty = JSON.stringify(config, pretty=true, indent=2)
print(compact)
print(pretty)
Use the overload that accepts a filename for short writes, or combine FileWriter and
FileReader when you need explicit resource management.
import klyn.collections
import klyn.io
import klyn.io.json
filename = "config.json"
config = {"fullscreen": true, "theme": "dark"}
JSON.stringify(filename, config)
data = JSON.parseMap(FilePath(filename))
fullscreen = data["fullscreen"] as Boolean
theme = data["theme"] as String
print(fullscreen)
print(theme)
JSON.parse<TYPE>(...) asks the parser to materialize the expected type. This keeps
the static type visible at the call site.
import klyn.collections
import klyn.io.json
data = JSON.parse<Map<String, Object>>("""{"theme":"dark","retries":3}""")
assert data["theme"] as String == "dark"
assert data["retries"] as Int == 3
JSON preserves structure, not business rules. Treat parsed maps as untrusted input until required keys, value types, ranges, and enum-like strings have been checked.