J'ai une chaîne qui contient un JSON. La seule chose que je sache à propos de ce JSON, c'est qu'il est valide. Comment transformer cette chaîne en BSON?
La BsonWriter
de Newtonsoft.Json
est obsolète.
Vous devez ajouter un nouveau package de nuget appelé Json.NET BSON
(il suffit de rechercher newtonsoft.json.bson
) et de travailler avec BsonDataWriter
et BsonDataReader
au lieu de BsonWriter
et BsonReader
:
public static string ToBson<T>(T value)
{
using (MemoryStream ms = new MemoryStream())
using (BsonDataWriter datawriter = new BsonDataWriter(ms))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(datawriter, value);
return Convert.ToBase64String(ms.ToArray());
}
}
public static T FromBson<T>(string base64data)
{
byte[] data = Convert.FromBase64String(base64data);
using (MemoryStream ms = new MemoryStream(data))
using (BsonDataReader reader = new BsonDataReader(ms))
{
JsonSerializer serializer = new JsonSerializer();
return serializer.Deserialize<T>(reader);
}
}
Je pense que cela fera l'affaire pour vous
MongoDB.Bson.BsonDocument BSONDoc
= MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(json);
Vous pouvez également jeter un oeil sur Sérialiser sur BSON et C # - Conversion de chaîne JSON en document BSON
https://www.nuget.org/packages/Newtonsoft.Json
PM> Install-Package Newtonsoft.Json -Version 7.0.1
using Newtonsoft.Json.Bson;
using Newtonsoft.Json;
class Program
{
public class TestClass
{
public string Name { get; set; }
}
static void Main(string[] args)
{
string jsonString = "{\"Name\":\"Movie Premiere\"}";
var jsonObj = JsonConvert.DeserializeObject(jsonString);
MemoryStream ms = new MemoryStream();
using (BsonWriter writer = new BsonWriter(ms))
{
JsonSerializer serializer = new JsonSerializer();
serializer.Serialize(writer, jsonObj);
}
string data = Convert.ToBase64String(ms.ToArray());
Console.WriteLine(data);
}
}
en utilisant json
dans mon projet, j'ai remarqué qu'il existe un moyen simple et pratique de convertir json
en un document bson
.
string json = "{\"Name\":\"Movie Premiere\"}";
BsonDocument document = BsonDocument.Parse(json);
vous pouvez maintenant utiliser document
comme bson n’importe où.
Remarque - J'utilise cette document
pour l'insérer dans la base de données MongoDb
.
En espérant que cela vous aidera.
Voir! Il y a une manière beaucoup plus simple de faire ceci:
BsonDocument doc = BsonDocument.Parse("{\"your\": \"json\", \"string\": \"here\"}");