Search code examples
c#json.netbson

How to convert JSON to BSON using Json.NET


I have a string that contains a JSON. The only thing I know about this JSON is that it is valid. How to turn this string into BSON?


Solution

  • The BsonWriter of Newtonsoft.Json is obsolete.

    You need to add a new nuget-package called Json.NET BSON (just search for newtonsoft.json.bson) and work with BsonDataWriter and BsonDataReader instead of BsonWriterand 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);
        }
    }