Как конвертировать JSON в BSON, используя Json.NET

У меня есть строка, содержащая JSON. Единственное, что я знаю об этом JSON, это то, что он действителен. Как превратить эту строку в BSON?

5 ответов


на BsonWriter of Newtonsoft.Json устарела.

вы должны добавить новый NuGet-пакет под названием Json.NET BSON (просто искать newtonsoft.json.bson) и с BsonDataWriter и BsonDataReader вместо BsonWriterи 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);
    }
}

Я думаю, что это будет делать трюк для вас

MongoDB.Bson.BsonDocument BSONDoc
= MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(json);

вы также можете посмотреть на сериализовать в BSON и C# - преобразование строки JSON в документ bson


вот! Есть гораздо более простой способ сделать это:

BsonDocument doc = BsonDocument.Parse("{\"your\": \"json\", \"string\": \"here\"}");

https://www.nuget.org/packages/Newtonsoft.Json

PM> установить-пакет Newtonsoft.Json-Версия 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);
        }
    }

при использовании json в моем проекте я заметил, что есть простой и сладкий способ преобразования json на bson документ.

 string json = "{\"Name\":\"Movie Premiere\"}";
 BsonDocument document = BsonDocument.Parse(json);

теперь вы можете использовать document как bson в любом месте.

Примечание- я использую этот document вставить в