Skip to main content

JSON types

JSON types for the FairCom DB

Abstract

JSON types for the FairCom DB

JSON consists of one or more JSON values that can be nested inside each other.

Section

Description

JSON

JavaScript Object Notation (JSON) is a simple format for representing data.

JSON data type

The JSON data type is a field type in the FairCom server.

JSON value

A JSON value is the building block of JSON . A JSON value can stand alone or can be nested inside another JSON value.

JSON array

A JSON array contains one or more JSON values.

JSON object

A JSON object is a set of JSON properties.

JSON property

A JSON property has a name and a value where the name may be any string value and the value may be set to any JSON type.

JSON number

A JSON number value is a signed, decimal floating point number.

JSON string

A JSON string value is a sequence of UTF-8 characters enclosed by double quotes.

JSON Boolean

A JSON Boolean value is true or false.

JSON null

A JSON null value is null.

JavaScript Object Notation (JSON) is a simple format for representing data. It requires very little markup and is flexible enough to represent the majority of data structures. It is self-describing, which makes it ideal for schemaless applications and searches. It can optionally be paired with a schema to define an expected structure.

Each JSON document contains one JSON value. A value can be one of a variety of JSON types. Some JSON types, such as JSON object and JSON array, allow JSON values to be nested to create complex structures.

Example 1. JSON object value
{
  "stringProperty": "value1",
  "numberProperty": -123.456,
  "booleanProperty": false,
  "nullProperty": null,
  "objectProperty": 
  { 
    "childProperty": true 
  },
  "arrayProperty": 
  [ 
    "1", 
    2, 
    3.4, 
    true, 
    null, 
    { "child":"object" }, 
    [ "child", "array" ] 
  ]
}


The JSON data type is a field type in the FairCom server. Its length can be up to 2 billion bytes or be limited to a length between 1 and 65,500 bytes. The JSON data type is flexible because it may contain any number and a variety of properties and values, including objects, arrays, strings, numbers, true, false, and null. See, Data types.

A table may contain a mix of JSON fields for flexibility and strongly typed fields for predictability. For maximum flexibility, a table may have as few as two fields; an "id" field to uniquely identify each record and a JSON field to store any possible value in each record.

A JSON value is the building block of JSON . A JSON value can stand alone or can be nested inside another JSON value.

A JSON value is strongly typed as one of the JSON types: JSON object, JSON array, JSON string, JSON number, JSON Boolean, or JSON null.

A JSON array contains one or more JSON values. Each JSON value may be any JSON type. An array starts with the left square bracket ([) character, contains zero or more values separated by the comma (, ) character, and ends with the right square bracket (]) character — for example, [ 1, 2, 3] or [ "a", "b", "c"].

Each value in a JSON array can be any type, but it is best practice for each value in a JSON array to have the same type, such as an array of strings, numbers, or objects where each object has the same structure.

Example 2. JSON array structure

A consistent structure allows an array to be indexed for reliable query results.

[
  { 
    "name": "mike", 
    "eats": "pizza" 
  },
  { 
    "name": "teresa", 
    "eats": "chocolate" 
  }
]


A JSON object is a set of JSON properties. Each JSON property in an object must have a unique name. An object starts with the left curly bracket ({) character, contains zero or more properties separated by the comma (, ) character, and ends with the right curly bracket (}) character.

Example 3. JSON object containing two properties
{
  "property1": "value1",
  "property2": false
} 


A JSON property has a name and a value where the name may be any string value and the value may be set to any JSON type.

The name part of a property begins with the quotation marks (") followed by one or more UTF-8 characters and ends with the quotation marks (").

The name is followed by the colon (:) character to separate it from the value.

The value may be any JSON type. Each type has its own formatting rules: JSON object, JSON array, JSON string, JSON number, JSON Boolean, or JSON null.

White space can be inserted between the parts of a JSON property and between the property and the JSON object that contains it.

Example 4. JSON property

A JSON property by itself is not a valid JSON document; it must be part of a JSON object.

"myProperty":"myValue" 


A JSON number value is a signed, decimal floating point number. It is represented as a sequence of ASCII numeric digits with an optional plus (+) or minus (-) character at the beginning and an optional decimal point in the middle — for example, -91.2247.

A JSON number is not a binary floating point number and does not have problems with rounding and precision, but some JSON parsers incorrectly convert it into a binary floating point number and create these problems. Thus, it is safest to represent numbers in JSON within a JSON string.

A JSON string value is a sequence of UTF-8 characters enclosed by a set of quotation marks ("").

There is no official limit to the number of characters in a string, but the practical limit is typically around 1 megabyte. The FairCom server supports JSON strings up to 2 GB in length.

Example 5. String
"property1": "value1"


A JSON Boolean value is true or false.

Example 6. JSON Boolean
"childProperty": true 


A JSON null value is null. The convention in JSON is that omitting a property and setting it to null are the same thing. In contrast, setting a property to an empty value ("", {}, [], or [{}] ) are not the same thing as null. An application using JSON must determine the meaning of these empty values.