Mam ciąg znaków, który zawiera JSON. Jedyną rzeczą, wiem o tym JSON jest to, że jest on ważny. Jak zmienić ten ciąg w BSON?Jak konwertować JSON do BSON użyciu Json.NET
Odpowiedz
BsonWriter
z Newtonsoft.Json
jest przestarzała.
Trzeba dodać nową Nuget-pakiet o nazwie Json.NET BSON
(wystarczy wyszukać newtonsoft.json.bson
) i pracować z BsonDataWriter
i BsonDataReader
zamiast BsonWriter
i 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);
}
}
myślę, że to załatwi za Ciebie
MongoDB.Bson.BsonDocument BSONDoc
= MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(json);
Można też rzucić okiem na Serialize to BSON i C# - Converting JSON string to BSON document
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);
}
}
B ehold! Jest znacznie prostszy sposób, aby to zrobić:
BsonDocument doc = BsonDocument.Parse("{\"your\": \"json\", \"string\": \"here\"}");
podczas korzystania json
w moim projekcie zauważyłem, że istnieją proste i słodki sposób przekonwertować json
do dokumentu bson
.
string json = "{\"Name\":\"Movie Premiere\"}";
BsonDocument document = BsonDocument.Parse(json);
teraz możesz użyć document
jako bander wszędzie.
Uwaga- Używam tego document
do wstawienia do bazy danych MongoDb
.
Licząc nadzieję, że to pomoże.
aktualizacji dla użytkowników chcieć użyć tego: 'BsonWriter 'jest przestarzały, sprawdź moją odpowiedź –