Docs Menu
Docs Home
/ /

JSON extendido

En esta guía, puede aprender a utilizar el formato de datos JSON extendido al interactuar con documentos MongoDB.

JSON es un formato de datos legible que representa los valores de objetos, matrices, números, cadenas, valores booleanos y valores nulos. Este formato solo admite un subconjunto de tipos de datos BSON, que es el formato que MongoDB utiliza para almacenar datos. El formato JSON extendido admite más tipos BSON y define un conjunto reservado de claves con el prefijo "$" para representar información de tipo de campo que corresponde directamente a cada tipo en BSON.

Para obtener más información sobre JSON, BSON y JSON extendido, consulte Entrada manual del servidorMongoDB JSON, BSON y recursos JSON extendidos.

MongoDB Extended JSON proporciona formatos de string para representar datos BSON. Cada formato cumple con la RFC JSON y satisface casos de uso específicos.

La siguiente tabla describe cada formato JSON extendido:

Nombre
Descripción

Canónico

A string format that avoids loss of BSON type information during data conversions.
This format prioritizes type preservation at the loss of human-readability and interoperability with older formats. To specify this mode, pass bsoncxx::ExtendedJsonMode::k_canonical as a mode argument to the to_json() method.

Relajado

A string format that describes BSON documents with some type information loss.
This format prioritizes human-readability and interoperability at the loss of certain type information. To specify this mode, pass bsoncxx::ExtendedJsonMode::k_relaxed as a mode argument to the to_json() method.

Legacy

A string format that describes BSON documents with some type information loss.
This format matches Relaxed Extended JSON with some exceptions.
The C++ driver uses this mode by default.

Nota

El controlador de C++ analiza el $uuid tipo JSON extendido de una cadena a un b_binary objeto de subtipo 4 binario. Para obtener más información sobre el análisis $uuid de campos, consulte la sección "Reglas especiales para el análisis de campos $uuid" en la especificación JSON extendida.

Los siguientes ejemplos muestran un documento que contiene un campo ObjectId, una fecha y un número largo, representados en cada formato JSON extendido. Haga clic en la pestaña correspondiente al formato del ejemplo que desea ver:

{
"_id": { "$oid": "573a1391f29313caabcd9637" },
"createdAt": { "$date": { "$numberLong": "1601499609" }},
"numViews": { "$numberLong": "36520312" }
}
{
"_id": { "$oid": "573a1391f29313caabcd9637" },
"createdAt": { "$date": "2020-09-30T18:22:51.648Z" },
"numViews": 36520312
}
{
"_id": { "$oid": "573a1391f29313caabcd9637" },
"createdAt": { "$date": "1601499771648" },
"numViews": 36520312
}

Puede leer una cadena JSON extendida en un documento BSON de C++ llamando al método bsoncxx::from_json(). Este método analiza una cadena JSON extendida y devuelve un bsoncxx::document::value con los datos.

El siguiente ejemplo muestra cómo se puede leer una cadena JSON extendida en un documento BSON utilizando el método from_json():

bsoncxx::document::value doc = bsoncxx::from_json(R"(
{
"_id": {"$oid": "507f1f77bcf86cd799439011"},
"myNumber": {"$numberLong": "4794261"}
}
)");

Puede escribir una cadena JSON extendida con el método bsoncxx::to_json(). De forma predeterminada, este método devuelve la cadena JSON extendida en el formato tradicional, pero puede especificar formatos canónicos o flexibles pasando un argumento mode.

Nota

Versión heredada

La opción de formato heredado indica al controlador de C++ que serialice los tipos BSON con el formato JSON extendido heredado de Libbson. El controlador lo utiliza como modo predeterminado.

Para obtener más información, consulte la página JSON extendido heredado en la documentación de la API del controlador C.

El método bsoncxx::to_json() está disponible para varios tipos de bibliotecas principales y estándar, incluyendo array y document. El siguiente ejemplo convierte un valor document en una cadena JSON extendida en formato canónico:

bsoncxx::builder::basic::document doc_builder;
doc_builder.append(kvp("myNumber", 11223344));
doc_builder.append(kvp("myString", "String value"));
bsoncxx::document::value doc = doc_builder.extract();
std::string json_str =
bsoncxx::to_json(doc, bsoncxx::ExtendedJsonMode::k_canonical);
std::cout << json_str << std::endl;
{"myNumber":{"$numberInt":"11223344"},"myString":"String value"}

Para obtener más información sobre los tipos y métodos mencionados en esta guía, consulte la siguiente documentación de API:

Para obtener más información sobre JSON extendido, consulte MongoDB JSON extendido2 (v) en el manual del servidor MongoDB.

Volver

BSON

En esta página