hollow.json

June 4, 2026 ยท View on GitHub

Encode and decode JSON. Used for workspace bootstrap specs and any other small data files you want to round-trip.

Functions

hollow.json.encode(value)        -- value -> string
hollow.json.decode(text)         -- string -> value

Both directions accept and return plain Lua values: strings, numbers, booleans, nil, arrays, and tables with string keys. Object-like tables must have string keys; arrays must be 1-indexed and dense.

Examples

local s = hollow.json.encode({ name = "repo", tabs = { "editor", "backend" } })
-- s == '{"name":"repo","tabs":["editor","backend"]}'

local t = hollow.json.decode(s)
print(t.name)        -- "repo"
print(t.tabs[1])     -- "editor"

Inspect a snapshot for debugging:

print(hollow.json.encode(hollow.config.snapshot(), { indent = true }))

encode accepts an optional opts table; indent (number or boolean) pretty-prints.

Use cases

  • Workspace bootstrap specs (hollow.workspace)
  • Round-tripping small config blobs
  • Logging structured data to hollow.log

For large payloads use chunked HTP frames; see HTP protocol.

See also