---
name: "json_write"
section: "3tcl"
platform: "linux"
package: "tcllib"
version: "2.0+dfsg-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/json_write"
---

# json\_write(3tcl)

JSON generation

```

```

## NAME

json::write - JSON generation

## SYNOPSIS

package require **Tcl 8.5 9**

package require **json::write ?1.0.5?**

**::json::write** **indented**

**::json::write** **indented** *flag*

**::json::write** **aligned**

**::json::write** **aligned** *flag*

**::json::write** **string** *s*

**::json::write** **array** *arg*...

**::json::write** **array-strings** *arg*...

**::json::write** **object** *key* *value*...

**::json::write** **object-strings** *key* *value*...

```

```

## DESCRIPTION

The **json::write** package provides a simple Tcl-only library for generation of text in the JSON *http://www.json.org/* data exchange format as specified in RFC 4627 *http://www.ietf.org/rfc/rfc4627.txt*.

## COMMANDS

- **::json::write** **indented**

  This method returns the current state of the indentation setting.

- **::json::write** **indented** *flag*

  This and the method **aligned** configure the layout of the JSON generated by the package.

  If this *flag* is set (default) the package will break the generated JSON code across lines and indent it according to its inner structure, with each key of an object on a separate line.

  If this flag is not set, the whole JSON object will be written on a single line, with minimum spacing between all elements.

- **::json::write** **aligned**

  This method returns the current state of the alignment setting.

- **::json::write** **aligned** *flag*

  This and the method **indented** configure the layout of the JSON generated by the package.

  If this *flag* is set (default) the package ensures that the values for the keys in an object are vertically aligned with each other, for a nice table effect. To make this work this also implies that **indented** is set as well.

  If this flag is not set, the output is formatted as per the value of **indented**, without trying to align the values for object keys.

- **::json::write** **string** *s*

  This method takes the string *s* and returns it properly quoted for JSON as its result.

- **::json::write** **array** *arg*...

  This method takes a series of JSON formatted arguments and returns them as a properly formatted JSON array as its result.

- **::json::write** **array-strings** *arg*...

  This is a convenience variant of **array**. It assumes that all arguments are plain strings and formats them as JSON strings before passing them into the **array**.

- **::json::write** **object** *key* *value*...

  This method takes a series of key/value arguments, the values already formatted for JSON, and returns them as a properly formatted JSON object as its result, with the keys formatted as JSON strings.

- **::json::write** **object-strings** *key* *value*...

  This is a convenience variant of **object**. It assumes that all *value* arguments are plain strings and formats them as JSON strings before passing them into the **object**.

## RELATED

To parse json, instead of writing it, see package **json**.

## BUGS, IDEAS, FEEDBACK

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category *json* of the *Tcllib Trackers* \[http://core.tcl.tk/tcllib/reportlist\]. Please also report any ideas for enhancements you may have for either package and/or documentation.

When proposing code changes, please provide *unified diffs*, i.e the output of **diff -u**.

Note further that *attachments* are strongly preferred over inlined patches. Attachments can be made by going to the **Edit** form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.

## KEYWORDS

data exchange, exchange format, javascript, json

## CATEGORY

CGI programming

## COPYRIGHT

```
Copyright (c) 2009-2013,2022 Andreas Kupries <andreas_kupries@sourceforge.net>
```
