[英]How to convert JSON to BSON using Json.NET
我有一個包含 JSON 的字符串。 關於這個 JSON,我唯一知道的是它是有效的。 如何把這個字符串變成 BSON?
Newtonsoft.Json
的BsonWriter
已過時。
您需要添加一個名為Json.NET BSON
的新 nuget 包(只需搜索newtonsoft.json.bson
)並使用BsonDataWriter
和BsonDataReader
而不是BsonWriter
和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);
}
}
在我的項目中使用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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.