Syntax
json.encodePretty(value: any, options?: EncodeOptions): stringArguments
| Name | Type | Description |
|---|---|---|
value | any | Value to encode. nil, booleans, numbers, strings, tables, and json.null are handled directly. Unsupported Lua types encode as null unless errorOnUnsupported is true. |
options? | EncodeOptions | Optional encode options. json.encodePretty reads the same options as json.encode, then forces pretty to true. Without options, it uses a two-space indent. A number sets the indent width clamped to 0.16, a string sets the indent text, and a table can set sortKeys, emptyTableAsArray, errorOnUnsupported, encodeInvalidNumbersAsNull, maxDepth, and indent. |
Returns
| Name | Type | Description |
|---|---|---|
json | string | Readable formatted JSON string. Encoding errors are thrown as Luau errors. |
Description
Serializes a Lua value to a readable formatted JSON string as JSON. json.pretty is registered to the same function.
Call it with 2 parameter(s): value, options. The argument table explains which values are required and which ones only refine the behavior.
It returns json (string). Use the returns table to separate successful values from nil results and recoverable errors.
Example
Encode JSON-compatible values as readable formatted JSON with pretty output forced on.
local text = json.encodePretty({
name = "Real",
version = 1,
features = json.array({ "docs", "examples" }),
missing = json.null,
}, {
sortKeys = true,
})
print(text)Types
EncodeOptions
Controls JSON serialization and formatting.
pretty? boolean Enables formatted, multi-line JSON output.sortKeys? boolean Sorts object keys before encoding.emptyTableAsArray? boolean Encodes an empty table as an array instead of an object.errorOnUnsupported? boolean Raises an error instead of substituting unsupported values.encodeInvalidNumbersAsNull? boolean Encodes NaN and infinite numbers as JSON null.maxDepth? integer Sets the maximum nesting depth, clamped from 1 to 4096.indent? string Sets the indentation string, limited to 32 characters.