web-dev-qa-db-ja.com

Json.NETを使用してJSONをBSONに変換する方法

JSONを含む文字列があります。このJSONについて私が知っている唯一のことは、それが有効であることです。この文字列をBSONに変換する方法は?

10

Newtonsoft.JsonBsonWriterは廃止されました。

Json.NET BSONという新しいnuget-packageを追加し(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);
    }
}
13
Matthias Burger

これでうまくいくと思います

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

Serialize to BSON および C#-JSON文字列からBSONドキュメントへの変換 も確認できます。

5

見よ!これを行うにはもっと簡単な方法があります:

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

プロジェクトでjsonを使用しているときに、jsonbsonドキュメントに変換する簡単で便利な方法があることに気付きました。

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

これで、どこでもdocumentをbsonとして使用できます。

Note-documentデータベースに挿入するために、このMongoDbを使用しています。

これがあなたを助けることを願っています。

4
Vikash Pandey

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