One dimensional *Arrays* are encoded as a sequence of elements preceded by the number of elements encoded as an *Int32* value. If an *Array* is null, then its length is encoded as −1. An *Array* of zero length is different from an *Array* that is null so encoders and decoders shall preserve this distinction.

Multi-dimensional *Arrays* are encoded as an *Int32* *Array* containing the dimensions followed by a list of all the values in the *Array*. The total number of values is equal to the product of the dimensions. The number of values is 0 if one or more dimension is less than or equal to 0. The process for reconstructing the multi-dimensional array is described in 5.2.2.16.