title: JSON in TiddlyWiki
tags: Features
type: text/vnd.tiddlywiki
created: 20220427174702859
modified: 20220611104737314

!! Introduction

JSON (~JavaScript Object Notation) is a standardised text representation for data structures that is widely used for the storage and transfer of data.

JSON is used in several different contexts in TiddlyWiki. For example:

* Tiddlers are represented as JSON data within TiddlyWiki HTML files
* Groups of tiddlers can be [[exported|How to export tiddlers]] and [[imported|Importing Tiddlers]] as JSON files
* Plugin tiddlers store their constituent shadow tiddlers as JSON data
* The client-server configuration uses [[JSON messages|TiddlyWeb JSON tiddler format]] to communicate between the client and the server
* Arbitrary JSON data within DataTiddlers can be processed and manipulated using a set of filter operators and action widgets

!! About JSON

The technical description of JSON at the official website https://json.org/ is terse. Here we summarise the main features.

JSON supports two basic data structures:

''Arrays'' are lists of items. The items are identified by their numeric index (starting at zero)

An example of an array is:

```json
["one","two","three\"four"]
```

Note the following features of arrays:

* The array is signified by square brackets surrounding the list of items
* Each item is a string in double quotes. Double quotes can be included within the strings by preceding them with a backslash (`\`)
* The items are separated by commas

''Objects'' are collections of name/value pairs. Each item is a value that is identified by a unique name

An example of an object is:

```json
{
  "first": "This is the first value",
  "second": "This is the second value",
  "third": "This is the third value"
}
```

Note the following features of objects:

* The object is signified by curly braces surrounding the list of name/value pairs
* Each name/value pair consists of the name in double quotes, a colon, and then the value
* The name/value pairs are separated by commas

The examples above all show string values. JSON actually supports several different types of value. Any of these types can be used as a value:

* String values, as shown above
* Numeric values, represented as signed decimals such as `1`, `3.14`. Exponential notation can also be used e.g. `-1E10`
* Boolean values, represented by the keywords `true` and `false`
* The special value `null`, which is often used to represent data that is missing or incomplete
* Objects and arrays are also values, allowing complex nested structures to be represented

!! Working with Data Tiddlers

* [[Reading data from JSON tiddlers]]
* [[Constructing JSON tiddlers]]
* [[Modifying JSON tiddlers]]
