# json::write(3tcl) 1.0.5 json "JSON"

## 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. 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 © 2009-2013,2022 Andreas Kupries <andreas_kupries@sourceforge.net>