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

Pat*_*ski 9 c# json.net bson

我有一个包含JSON的字符串.我对这个JSON唯一了解的是它是有效的.如何将此字符串转换为BSON?

Mat*_*ger 12

BsonWriterNewtonsoft.Json是过时的.

你需要添加一个名为Json.NET BSON(只搜索newtonsoft.json.bson)的新nuget-package 并使用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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 当然,IP 可以很好地处理二进制数据,而且只有 http 需要 Base64 编码? (2认同)

Vik*_*dey 8

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

 string json = "{\"Name\":\"Movie Premiere\"}";
 BsonDocument document = BsonDocument.Parse(json);
Run Code Online (Sandbox Code Playgroud)

现在你可以document在任何地方用作 bson。

注意 -我正在使用它document插入MongoDb数据库。

希望这会帮助你。


Lou*_*eda 6

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

BsonDocument doc = BsonDocument.Parse("{\"your\": \"json\", \"string\": \"here\"}");
Run Code Online (Sandbox Code Playgroud)

  • 你可以使用`BsonArray.Parse` @VincentBuscarello (2认同)

Moh*_*ava 5

我认为这将为您解决问题

MongoDB.Bson.BsonDocument BSONDoc
= MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(json);
Run Code Online (Sandbox Code Playgroud)

您也可以看看将序列化为BSONC#-将JSON字符串转换为BSON文档