web-dev-qa-db-fra.com

Comment convertir JSON en BSON avec Json.NET

J'ai une chaîne qui contient un JSON. La seule chose que je sache à propos de ce JSON, c'est qu'il est valide. Comment transformer cette chaîne en BSON?

7

La BsonWriter de Newtonsoft.Json est obsolète.

Vous devez ajouter un nouveau package de nuget appelé Json.NET BSON (il suffit de rechercher newtonsoft.json.bson) et de travailler avec BsonDataWriter et BsonDataReader au lieu de BsonWriteret 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);
    }
}
7
Matthias Burger

Je pense que cela fera l'affaire pour vous

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

Vous pouvez également jeter un oeil sur Sérialiser sur BSON et C # - Conversion de chaîne JSON en document BSON

4
Mohit Shrivastava

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

PM> Install-Package 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);
        }
    }
2
MichaelMao

en utilisant json dans mon projet, j'ai remarqué qu'il existe un moyen simple et pratique de convertir json en un document bson.

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

vous pouvez maintenant utiliser document comme bson n’importe où.

Remarque - J'utilise cette document pour l'insérer dans la base de données MongoDb.

En espérant que cela vous aidera.

2
Vikash Pandey

Voir! Il y a une manière beaucoup plus simple de faire ceci:

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