繁体   English   中英

使用“多类型”属性序列化 Json object

[英]Serialize Json object with "multi-type" property

我正在关注Create a web API with ASP.NET 教程和 Z206E3718AF092FD1D12F80CAE7

而且我缺少一些非常基本的东西,如何序列化具有可能是“多类型”属性的 Json object。 也就是说,这个属性可以是一个字符串,也可以是另一个 object。

这是教程中的原始 Json 示例:

{
  "_id" : ObjectId("5bfd996f7b8e48dc15ff215d"),
  "Name" : "Design Patterns",
  "Author" : "Ralph Johnson"
}

这是教程中的原始POCO Model:

public class Book
{
    [BsonId]
    [BsonRepresentation(BsonType.ObjectId)]
    public string Id { get; set; }

    [BsonElement("Name")]
    public string BookName { get; set; }
    public string Author { get; set; }
}

When I call the "Post" and "Get" action on the WebApi Controller, the original Json model is serialized correctly into an instance of Book, saved into the database and retrieved correctly from the web service as expected.

但是,我需要添加一个“MultiUse”属性,其中MultiUse可以是字符串或 object 或其他内容,例如:

{
 "_id" : ObjectId("5bfd996f7b8e48dc15ff215d"),
 "Name" : "Design Patterns",
 "Author" : "Ralph Johnson",
 "MultiUse": "Some String"
}

或者

{
 "_id" : ObjectId("5bfd996f7b8e48dc15ff215d"),
 "Name" : "Design Patterns",
 "Author" : "Ralph Johnson",
 "MultiUse": {
     "foo":"bar"
  }
}

如果我尝试发布 object,此MultiUse属性将被序列化为另一种.Net 类型。

在此处输入图像描述

POCO Model 中的MultiUse应该是什么类型? 我试过ObjectDynamicBsonDocument ,但很明显,我认为 AspNet 和 MongoDb 驱动程序不会在我需要时自动序列化它。

这个多值属性几乎是我想使用 MongoDB 的唯一原因,我只想将该属性中的任何内容保存到数据库中。

这种情况在 ExpressJS 中没有问题,但由于客户要求,我需要.Net。

当然,我可以直接放弃强类型模式,使用 MongoDB 网络驱动函数在没有模型的情况下插入、更新和查询。 但由于这个“应该”是一个常见的场景,我只是想知道这是如何处理的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM