2.2 Message Syntax

This section contains common definitions used by this protocol specification. The syntax of the definitions uses JavaScript Object Notation (JSON), as specified in [RFC4627], and the common JSON in ABNF, as specified by [RFC5234].

 json-begin-array = json-whitespace %x5B json-whitespace ; [ left square bracket
 json-begin-object = json-whitespace %x7B json-whitespace ; { left curly bracket
 json-end-array = json-whitespace %x5D json-whitespace ; ] right square bracket
 json-end-object = json-whitespace %x7D json-whitespace ; } right curly bracket
 json-name-separator = json-whitespace %x3A json-whitespace ; : colon
 json-value-separator = json-whitespace %x2C json-whitespace ; , comma
 json-whitespace = *(
  %x20 / ; Space
  %x09 / ; Horizontal tab
  %x0A / ; Line feed or New line
  %x0D ; Carriage return
  )
 json-value = json-false / json-null / json-true / json-object / json-array / json-number / json-string
 json-false = %x66.61.6c.73.65 ; false
 json-null = %x6e.75.6c.6c ; null
 json-true = %x74.72.75.65 ; true
 json-bool = json-false / json-true
 json-object = json-begin-object [json-member *( json-value-separator json-member ) ] json-end-object
 json-member = json-string json-name-separator json-value
 json-number = [ json-minus ] json-int [ json-frac ] [ json-exp ]
 json-decimal-point = %x2E ; .
 json-digit1-9 = %x31-39 ; 1-9
 json-e = %x65 / %x45 ; e E
 json-exp = json-e [ json-minus / json-plus ] 1*DIGIT
 json-frac = json-decimal-point 1*DIGIT
 json-int = json-zero / ( json-digit1-9 *DIGIT )
 json-minus = %x2D ; -
 json-plus = %x2B ; +
 json-zero = %x30 ; 0
 json-array = json-begin-array [ json-value *( json-value-separator json-value ) ] json-end-array
 json-string = json-quotation-mark *json-char json-quotation-mark
 json-char = json-unescaped /
  json-escape (
  %x22 / ; " quotation mark U+0022
  %x5C / ; \ reverse solidus U+005C
  %x2F / ; / solidus U+002F
  %x62 / ; b backspace U+0008
  %x66 / ; f form feed U+000C
  %x6E / ; n line feed U+000A
  %x72 / ; r carriage return U+000D
  %x74 / ; t tab U+0009
  %x75 4HEXDIG ) ; uXXXX U+XXXX
 json-escape = %x5C ; \
 json-quotation-mark = %x22 ; "
 json-unescaped = %x20-21 / %x23-5B / %x5D-10FFFF

The following table defines the common JSON types used in this document.

Common Type

Value

JsonAnyValue

 json-value   

JsonStringValue

 json-string

JsonArrayOfAnyType

 json-array

JsonArrayOfString

 json-begin-array   [ json-string *( json-value-separator json-string) ] json-end-array 

JsonArrayOfInt

 json-begin-array   [ json-int *( json-value-separator json-int) ] json-end-array 

JsonArrayOfArrayOfAnyType

 json-begin-array   [JsonArrayOfAnyType *( json-value-separator JsonArrayOfAnyType) ]   json-end-array 

JsonArrayOfArrayOfString

 json-begin-array   [JsonArrayOfString *( json-value-separator JsonArrayOfString) ]   json-end-array

JsonArrayOfArrayOfArrayOfString

 json-begin-array   [JsonArrayOfArrayOfString *( json-value-separator JsonArrayOfArrayString) ]   json-end-array