gpt4 book ai didi

c# - 使用 "multi-type"属性序列化 Json 对象

转载 作者:行者123 更新时间:2023-12-04 11:13:30 25 4
gpt4 key购买 nike

我正在关注 Create a web API with ASP.NET Core and MongoDB教程
而且我缺少一些非常基本的东西,即如何序列化具有可能是“多类型”属性的 Json 对象。也就是说,这个属性可以是一个字符串,也可以是另一个对象。
这是教程中的原始 Json 示例:

{
"_id" : ObjectId("5bfd996f7b8e48dc15ff215d"),
"Name" : "Design Patterns",
"Author" : "Ralph Johnson"
}
这是教程中的原始 POCO 模型:
public class Book
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; }

[BsonElement("Name")]
public string BookName { get; set; }
public string Author { get; set; }
}
当我在 WebApi Controller 上调用“发布”和“获取”操作时,原始 Json 模型被正确序列化为 Book 实例,保存到数据库中,并按预期从 Web 服务中正确检索。
但是,我需要添加一个“MultiUse”属性,其中 MultiUse可以是字符串或对象,也可以是其他东西,例如:
{
"_id" : ObjectId("5bfd996f7b8e48dc15ff215d"),
"Name" : "Design Patterns",
"Author" : "Ralph Johnson",
"MultiUse": "Some String"
}
或者
{
"_id" : ObjectId("5bfd996f7b8e48dc15ff215d"),
"Name" : "Design Patterns",
"Author" : "Ralph Johnson",
"MultiUse": {
"foo":"bar"
}
}
如果我尝试发布一个对象,这个 MultiUse属性被序列化为另一种 .Net 类型。
enter image description here
应该是什么类型 MultiUse在 POCO 模型中?我试过 Object , Dynamic , BsonDocument ,但很明显我认为 AspNet 和 MongoDb 驱动程序不会在我需要时自动序列化它。
这个多值属性几乎是我想使用 MongoDB 的唯一原因,我只想将该属性中的任何内容保存到数据库中。
这种情况在 ExpressJS 中没有问题,但由于客户端要求,我需要 .Net。
当然,我可以删除强类型模式并使用 MongoDB 网络驱动程序函数在没有模型的情况下插入、更新和查询。但由于这“应该”是一个常见的场景,我只是想知道这是如何处理的。

最佳答案

有几种方法可以解决这个问题,
我的建议是导入 Newtonsoft.Json ,然后使用 MultiUseJObject ,或者如果 MultiUse数组为 Jarray .

关于c# - 使用 "multi-type"属性序列化 Json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67945461/

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