首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在json配置中反序列化不同对象类型的列表?

如何在json配置中反序列化不同对象类型的列表?
EN

Stack Overflow用户
提问于 2021-09-07 16:37:47
回答 1查看 152关注 0票数 0

我使用Microsoft.Extensions.Configuration从json文件中读取配置对象。但我不知道如何反序列化由基类派生的项填充的List<BaseClass>。我想,您必须将对象的类型存储在某个地方(比如newtonsoft的JsonConvert.SerializeObject()中的JsonConvert.SerializeObject()中的),但是我不能反序列化它。

编辑:

以下是我想要做的事情的一个例子。首先,配置项:

代码语言:javascript
复制
    public abstract class Notifier
    {
        public string Name { get; set; }
        public abstract void Notify(string message);
    }

    public class MailNotifier : Notifier
    {
        public string MailAddress { get; set; }
        public override void Notify(string message)
        {
            Console.WriteLine("Send mail with message '" + Name + "' to " + MailAddress);
        }
    }

    public class SmsNotifier : Notifier
    {
        public string PhoneNumber { get; set; }
        public override void Notify(string message)
        {
            Console.WriteLine("Send SMS with message '" + Name + "' to " + PhoneNumber);
        }
    }

    public class NotifierConfig
    {
        public List<Notifier> Notifiers { get; set; }
    }

理想情况下,我希望得到这样的配置:

代码语言:javascript
复制
NotifierConfig config = configuration.Get<NotifierConfig>();

config.json看起来如下所示:

代码语言:javascript
复制
{
  "NotifierConfig": {
    "Notifiers": [
      {
        //"type": "MailNotifier",
        "Name": "MailNotifier_Admin",
        "MailAddress": "admin@somecompany.com"
      },
      {
        //"type": "MailNotifier",
        "Name": "MailNotifier_CEO",
        "MailAddress": "ceo@somecompany.com"
      },
      {
        //"type": "SmsNotifier",
        "Name": "SmsNotifier_Admin",
        "PhoneNumber": "1234567"
      },
      {
        //"type": "SmsNotifier",
        "Name": "SmsNotifier_CEO",
        "PhoneNumber": "7654321"
      }
    ]
  }
}
EN

回答 1

Stack Overflow用户

发布于 2021-09-07 17:51:17

我们在JsonConvert.SerializeObject(yourObject)中有一个可用的函数,除此之外还有一个重载,您可以在其中定义JsonSerializerSettings

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69091820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档