【发布时间】:2016-02-14 14:34:43
【问题描述】:
我有一个包含 JSON 的字符串。关于这个 JSON,我唯一知道的是它是有效的。如何把这个字符串变成 BSON?
【问题讨论】:
我有一个包含 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\"}");
【讨论】:
BsonArray.Parse@VincentBuscarello
我认为这对你有用
MongoDB.Bson.BsonDocument BSONDoc
= MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(json);
你也可以看看Serialize to BSON和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);
}
}
【讨论】:
BsonWriter 已过时,请查看我的答案