Ich habe eine Zeichenfolge, die ein JSON enthält. Das einzige, was ich über dieses JSON weiß, ist, dass es gültig ist. Wie wird diese Zeichenfolge in BSON umgewandelt?Wie konvertiert man JSON zu BSON mit Json.NET
Antwort
Die BsonWriter
von Newtonsoft.Json
ist veraltet.
Sie benötigen ein neues nuget-Paket Json.NET BSON
genannt hinzufügen (Suche nur für newtonsoft.json.bson
) und arbeiten mit BsonDataWriter
und BsonDataReader
statt BsonWriter
und 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);
}
}
Ich denke, das für Sie
MongoDB.Bson.BsonDocument BSONDoc
= MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(json);
den Trick tun
Sie auch einen Blick auf Serialize to BSON und C# - Converting JSON string to BSON document
https://www.nuget.org/packages/Newtonsoft.Json
PM> Install-Package Newtonsoft.Json -Version haben 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);
}
}
B Erhöre! Es gibt eine viel einfachere Art und Weise, dies zu tun:
BsonDocument doc = BsonDocument.Parse("{\"your\": \"json\", \"string\": \"here\"}");
während json
in meinem Projekt mit i bemerkt, dass es einfach und süß json
in ein bson
Dokument zu konvertieren.
string json = "{\"Name\":\"Movie Premiere\"}";
BsonDocument document = BsonDocument.Parse(json);
jetzt können Sie document
als Bson überall verwenden.
Hinweis- Ich verwende diese document
zum Einfügen in MongoDb
Datenbank.
In der Hoffnung, dass dies Ihnen helfen wird.
Update für Benutzer möglicherweise diese verwenden möchten: 'BsonWriter 'ist veraltet, überprüfe meine Antwort –