如何使用 Json.NET 将 JSON 转换为 BSON

How to convert JSON to BSON using Json.NET

我有一个包含 JSON 的字符串。我对这个 JSON 的唯一了解是它是有效的。如何把这个字符串转成BSON?

我想这对你有用

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

你也可以看看Serialize to BSON and C# - Converting JSON string to BSON document

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);
        }
    }

看哪!有一种更简单的方法可以做到这一点:

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

在我的项目中使用 json 时,我注意到有一种简单而有效的方法可以将 json 转换为 bson 文档。

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

现在您可以在任何地方使用 document 作为 bson。

注意- 我正在使用这个 document 插入到 MongoDb 数据库中。

希望对您有所帮助。

Newtonsoft.JsonBsonWriter 已过时。

您需要添加一个名为 Json.NET BSON 的新 nuget 包(只需搜索 newtonsoft.json.bson)并使用 BsonDataWriterBsonDataReader 而不是 BsonWriterBsonReader

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);
    }
}