Menu Docs
Página inicial do Docs
/ / /
Driver C#/ .NET
/

Extended JSON

Neste guia, você verá como usar o formato de dados JSON estendido ao interagir com documentos do MongoDB .

JSON é um formato de dados legível por humanos que representa os valores de objetos, arrays, números, strings, booleans e nulos. Este formato suporta apenas um subconjunto de tipos de dados BSON, que é o formato que o MongoDB utiliza para armazenar dados. O formato Extended JSON aceita mais tipos de BSON, definindo um conjunto reservado de chaves prefixadas com "$" para representar informações de tipos de campo que correspondem diretamente a cada tipo em BSON.

Para saber mais sobre JSON, BSON e Extended JSON, consulte o recursoJSON e BSON e a entrada de manual do Extended JSON MongoDB Server .

O MongoDB Extended JSON fornece formatos de string para representar dados BSON. Cada formato está em conformidade com o JSON RFC e atende a casos de uso específicos.

A tabela abaixo descreve cada formato de Extended JSON:

Nome
Descrição

Estendidoou 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.

Descontraído

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. The .NET/C# Driver uses Relaxed mode by default.

Shell

A string format that matches the syntax used in the MongoDB shell.
This format prioritizes compatibility with the MongoDB shell, which often uses JavaScript functions to represent types.

Observação

O driver .NET/C# analisa o $uuid tipo de JSON estendido de uma string para um BsonBinary objeto de subtipo 4 binário. Para obter mais informações sobre a $uuid análise do campo, consulte a seção regras especiais para analisar campos $uuid na especificação de JSON estendida.

Os exemplos abaixo mostram um documento contendo um campo de ObjectId, data e número longo representado em cada formato Extended JSON. Clique na aba correspondente ao formato do exemplo que deseja 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": ObjectId("573a1391f29313caabcd9637"),
"createdAt": ISODate("2020-09-30T18:22:51.648Z"),
"numViews": NumberLong("36520312")
}

Você pode ler documentos JSON estendidos em um objeto C# usando o método BsonDocument.Parse(). O exemplo a seguir lê um documento JSON estendido em um objeto BsonDocument :

var ejson = "{\n\"_id\": { \"$oid\": \"573a1391f29313caabcd9637\" },\n \"createdAt\": { \"$date\": { \"$numberLong\": \"1601499609\" }},\n\"numViews\": { \"$numberLong\": \"36520312\" }\n}\n\n";
var document = BsonDocument.Parse(ejson);
Console.WriteLine(document.ToJson());
{ "_id" : { "$oid" : "573a1391f29313caabcd9637" }, "createdAt" : { "$date" : "1970-01-19T12:51:39.609Z" }, "numViews" : 36520312 }

Você pode escrever uma string de JSON estendida chamando o método ToJson() em um objeto BsonDocument ou classe personalizada. Você deve especificar um objeto JsonWriterSettings com a propriedade OutputMode definida para o formato Extended JSON desejado como um parâmetro.

Considere a seguinte classe personalizada :

public class MyDocument
{
public ObjectId Id { get; set; }
public DateTime CreatedAt { get; set; }
public long NumViews { get; set; }
}

O exemplo seguinte gera uma instância de MyDocument no formato JSON estendido especificando o valor CanonicalExtendedJson como uma propriedade OutputMode:

var document = new MyDocument();
document.Id = ObjectId.GenerateNewId();
document.CreatedAt = DateTime.UtcNow;
document.NumViews = 1234567890;
var json = document.ToJson(new JsonWriterSettings
{
OutputMode = JsonOutputMode.CanonicalExtendedJson
});
Console.WriteLine(json);
{ "_id" : { "$oid" : "68094769744af81f368ff1c1" }, "CreatedAt" : { "$date" : { "$numberLong" : "1745438569994" } }, "NumViews" : { "$numberLong" : "1234567890" } }

Para saber mais sobre os métodos e classes que você pode usar para trabalhar com documentos JSON, consulte a seguinte documentação da API:

Voltar

BSON

Nesta página