【问题标题】:Microsoft.Configuration.Extensions: How to get section / complex value as json string?Microsoft.Configuration.Extensions:如何获取节/复杂值作为 json 字符串?
【发布时间】:2018-08-29 15:55:54
【问题描述】:

当我们有这样的配置时

// appsettings.json
{
    "SomeServiceConfiguration": {
       "Server": "127.0.0.1",
       "Port": "25"
    }
}

可以使用绑定来访问数据:

IConfiguration configuration =  ...;
var section = configuration.GetSection("SomeServiceConfiguration");
var val = section.Value; // this is null
var t = new SomeServiceConfiguration();
section.Bind(t);

但是是否有可能获得价值(部分内容)“just as string”(事实上是json){"Server": "127.0.0.1", "Port": "25"}

【问题讨论】:

  • 我不太确定你在问什么。您是在问如何将appsettings.json 的特定部分读入字符串?
  • 是的。如果它是复杂类型,而不仅仅是纯字符串值。帮助我改进问题。
  • 因为我想自己反序列化
  • 但是您已经绑定了部分中的对象,这应该从部分值中填充对象。
  • @RomanPokrovskij 复杂类型是什么意思?您可以反序列化为包含字符串、整数、其他自定义对象等的对象。也许分享您最终想要反序列化的对象的示例?

标签: c# .net-core configuration-files


【解决方案1】:

根据ConfigurationSection Class,这是不可能直接实现的。

但是,您可以使用ConfigurationElement.SerializeElement(XmlWriter, Boolean) Method 序列化为 XML,默认情况下可以这样做。之后您必须转换为 JSON,所以这似乎有点过头了。

我建议构建一个新的JSON Object 并直接访问部分值。

【讨论】:

  • 谢谢。我还认为这种不可能的抽象部分“完全隐藏”了内部数据表示。我仍然会留下这个问题,因为我不明白这种“完整性”是否是设计必需的,将来可能会改变吗?
猜你喜欢
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多