2.2.6.3.4 Complex Type

An instance of a ComplexType MUST be represented as a Verbose JSON object. Each declared property defined on the ComplexType MUST be represented as a name/value pair within the JSON object. Additional name/value pairs that do not represent a declared property of the ComplexType SHOULD NOT be included. The name in the name/value pair MUST equal the name of the declared property on the ComplexType and the value of the pair MUST equal the value of the property. The order name/value pairs that appear within the JSON object MUST be considered insignificant.

The syntax of the Verbose JSON representation of a ComplexType is defined by the grammar listed in this section. The grammar rule "entityCTInVJson" defines the Verbose JSON representation of a ComplexType that can be used in both request and response payloads.

 entityCTInVJson = begin-object
                   entityCTBody
                   end-object
  
 entityCTBody    = quotation-mark entityComplexProperty quotation-mark
                   name-seperator
                   entityCTValue
  
 entityCTMetadata = quotation-mark "__metadata" quotation-mark
                    name-seperator
                    begin-object
                    [typeNVP]
                    end-object
  
 entityCTValue   = begin-object
                   [
                     (
                       entityPropertyInVJson / 
                       entityCTBody / 
                       entityCTMetadata
                     )
                     *( 
                       (value-seperator entityPropertyInVJson) /
                       (value-seperator entityCTBody)
                     )
                  ]  
                  end-object 
  
 entityPropertyInVJson   = ; see section 2.2.6.3.8
  
 typeNVP                = ;see section 2.2.6.3.3   
  

Listing: ComplexType Verbose JSON Representation