Reglas de serialización de JSON (marco de trabajo de los servicios de datos de ADO.NET)
El formato JSON que usan los servicios de datos de ADO.NET incluye protocolos para la serialización de los datos que se aplican a todos los recursos a los que se puede tener acceso mediante el servicio.
Reglas de serialización comunes a todos los recursos
Las reglas de serialización comunes a todos los recursos de los servicios de datos de ADO.NET se enumeran en este tema.
Nota |
---|
Muchas de las complejidades de la serialización Atom se pueden reducir mediante el uso de una biblioteca que convierta al formato JSON y desde éste. Para obtener más información, vea CodePlex. |
valores NULL
Todos los valores NULL se deben representar mediante el literal JSON 'NULL'.
Conjunto de entidades
Un conjunto de entidades se debe representar como matriz de objetos JSON, con un objeto para cada instancia de tipo de entidad dentro del conjunto.
Un conjunto de entidades vacío se debe representar como matriz JSON vacía; es decir, una matriz con cero elementos.
Tipo de entidad
El tipo de una entidad se debe serializar como objeto JSON.
Cada propiedad del tipo se debe representar como par nombre-valor en el objeto. El nombre del par nombre-valor es el de la propiedad y su valor, el de la propiedad. El orden en el que aparecen las propiedades en un objeto no es importante.
La serialización de JSON de una instancia de tipo de entidad debe incluir una propiedad denominada
__metadata
. Esta propiedad no contiene datos, sino una convención definida en este protocolo para especificar los metadatos de una instancia específica de un tipo. El valor de la propiedad__metadata
contiene dos propiedades:uri
ytype
. La propiedaduri
debe ser un URI que identifique la instancia de tipo de entidad actual. Más específicamente, el URI debe ser relativo respecto al URI solicitante después de quitar el último segmento de URI que no esté vacío. El valor de la propiedad'Type'
debe ser el nombre completo del espacio de nombres, comonamespaceName.typeName
, del tipo que represente la instancia de tipo de entidad en el servidor. La propiedad__metadata
puede contener una propiedadetag
. La propiedadetag
debe estar presente si la entidad tiene una propiedadetag
definidaLa propiedad
Type
debe estar incluida si el tipo de entidad representada por el objeto JSON forma parte de una jerarquía de herencia. De lo contrario, la propiedad'Type'
es opcional.Para obtener más detalles sobre cuándo deben, pueden o no deben estar presentes los parámetros
URI
ytype
, vea Requisitos HTTP comunes.
Tipo complejo
Se debe serializar un tipo complejo como objeto JSON.
Cada propiedad del tipo complejo se debe representar como par nombre-valor en el objeto JSON. El nombre del par nombre-valor es el de la propiedad y su valor, el de la propiedad. El orden en el que aparecen las propiedades en un objeto no es importante.
Propiedad de navegación y propiedad de vínculo
De forma predeterminada, la serialización de las propiedades de navegación y de vínculo se aplaza. Cuando se aplaza el contenido, la propiedad
uri
del elemento__deferred
no contiene el URI canónico. Para obtener información sobre cómo expandir la propiedad, vea Contenido aplazado (JASON).Puesto que las propiedades de navegación y de vínculo representan una asociación a un conjunto de entidades relacionado, la serialización de la propiedad de navegación sigue las mismas reglas que los conjuntos de entidades con la siguiente excepción:
- El elemento XML de nivel superior debe coincidir con el nombre de la propiedad de navegación o de vínculo en vez de hacerlo con el de un conjunto de entidades.
Propiedad
Una propiedad se puede serializar de dos formas: con ajuste de marcado o en formato no representativo sin ningún ajuste de marcado.
Para usar la serialización de una propiedad en JSON con ajuste de marcado:
La serialización se representa como par nombre-valor en un objeto JSON, por ejemplo,
{<propertyname>:<propertyvalue>}
.La tabla de este documento muestra cómo aplicar formato a cada tipo primitivo definido por Entity Data Model (EDM) mediante JSON. La columna de serialización de JSON define cómo se serializa un valor de propiedad.
Para utilizar la serialización de una propiedad en JSON sin marcado de ajuste (los URI que terminan en /$value
):
En este formulario, sólo se serializa el valor de la propiedad. La columna de serialización de JSON de la tabla siguiente especifica cómo se serializa cada tipo primitivo de este formulario.
Si el valor del tipo es NULL o está vacío, no hay serialización del valor de la propiedad de este formulario. En casos como éste, el modelo de la interacción del protocolo debe señalar la existencia de tales valores.
Tipo primitivo EDM | Serialización de JSON | Representación de NULL (sólo con ajuste de marcado) | Representación de valor vacío (sólo con ajuste de marcado) |
---|---|---|---|
Edm.Binary |
|
No disponible |
matriz de tamaño 0 |
Edm.Boolean |
true | false |
No disponible |
No disponible |
Edm.Byte |
|
No disponible |
No disponible |
Edm.DateTime |
|
No disponible |
No disponible |
Edm.Decimal |
|
No disponible |
No disponible |
Edm.Double |
|
No disponible |
No disponible |
Edm.Guid |
|
No disponible |
No disponible |
Edm.Int16 |
|
No disponible |
No disponible |
Edm.Int32 |
|
No disponible |
No disponible |
Edm.Int64 |
|
No disponible |
No disponible |
Edm.SByte |
|
No disponible |
No disponible |
Edm.Single |
|
No disponible |
No disponible |
Edm.String |
|
NULL |
"" |
Edm.UInt16 |
|
No disponible |
No disponible |
Edm.UInt32 |
|
No disponible |
No disponible |
Edm.UInt64 |
|
No disponible |
No disponible |
System.Data.Linq.Binary |
|
No disponible |
matriz de tamaño 0 |
System.Data.Linq.XElement |
|
NULL |
"" |
Vea también
Conceptos
Formato JSON (marco de trabajo de los servicios de datos de ADO.NET)
Contenido aplazado (marco de trabajo de los servicios de datos de ADO.NET, JSON)
Marco de trabajo de los servicios de datos de ADO.NET