簡體   English   中英

如何使用 Json.NET 將 JSON 轉換為 BSON

[英]How to convert JSON to BSON using Json.NET

我有一個包含 JSON 的字符串。 關於這個 JSON,我唯一知道的是它是有效的。 如何把這個字符串變成 BSON?

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

在我的項目中使用json時,我注意到有一些簡單而甜蜜的方法可以將json轉換為bson文檔。

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

現在您可以在任何地方將document用作 bson。

注意-我正在使用此document MongoDb數據庫

希望這會對你有所幫助。

看哪! 有一種更簡單的方法可以做到這一點:

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

我認為這會為你解決問題

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

using MongoDB.Bson;之后,使用https://www.nuget.org/packages/MongoDB.Bson包的另一種選擇; ,你可以只寫byte[] result = someObj.ToBson();

請參閱從 BsonDocument 反序列化為字符串並序列化回 BsonDocument

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM