gpt4 book ai didi

c# - 将字符串转换为 LiteDB BsonDocument

转载 作者:行者123 更新时间:2023-12-05 03:56:35 26 4
gpt4 key购买 nike

我有一个 JSON 格式的字符串,我想将其转换为 BSONDocument 以便插入到 LiteDB 数据库中。我如何进行转换?我正在使用 LiteDB 5.0.0-beta(我还在 LiteDB v4.1.4 中测试过)。这是代码;

MyHolder holder = new MyHolder
{
Json = "{\"title\":\"Hello World\"}"
};

BsonDocument bsonDocument = BsonMapper.Global.ToDocument(holder.Json);
// bsonDocument returns null in v5, and throws exception in v4.1.4

MongoDB 中的另一个例子,你可以这样做 ( Convert string into MongoDB BsonDocument );

string json = "{ 'foo' : 'bar' }";
MongoDB.Bson.BsonDocument document = MongoDB.Bson.Serialization.BsonSerializer.Deserialize<BsonDocument>(json);

到目前为止我也尝试过什么;

string json = "{ 'foo' : 'bar' }";    
byte[] bytes = Encoding.UTF8.GetBytes(json);
BsonDocument bsonDocument = LiteDB.BsonSerializer.Deserialize(bytes); // throws "BSON type not supported".

也尝试过;

BsonDocument bsonDocument = BsonMapper.Global.ToDocument(json); // Returns null bsonDocument.

最佳答案

您可以使用 LiteDB.JsonSerializer 将字符串反序列化为 BsonValue。然后可以将此值添加(或映射)到 BsonDocument(并存储)中:

var bValue = LiteDB.JsonSerializer.Deserialize(jstring);

只是添加一个有趣的花絮:您还可以直接从(流)阅读器反序列化,如 http 请求正文! (在 ASP.NET 核心中查找模型绑定(bind)):

   public sealed class BsonValueModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
using (var reader = new StreamReader(bindingContext.HttpContext.Request.Body))
{
var returnValue = LiteDB.JsonSerializer.Deserialize(reader);
bindingContext.Result = ModelBindingResult.Success(returnValue);
}

return Task.CompletedTask;
}
}

凭直觉,您会期望 BsonValue 仅包含“一个”值及其 dotnet 类型。然而,它(像 BsonDocument)也是键值对的集合。我怀疑答案是否仍然与原始帖子相关,但也许它会对其他人有所帮助。

关于c# - 将字符串转换为 LiteDB BsonDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59210669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com