首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >构建JSON配置部分

构建JSON配置部分
EN

Stack Overflow用户
提问于 2015-05-05 09:26:37
回答 5查看 27.2K关注 0票数 20

有没有办法用JSON而不是XML编写配置节?

假设我有以下ConfigurationSection

代码语言:javascript
复制
public class UsersConfig : ConfigurationSection {

      [ConfigurationProperty("users",
                             IsRequired = false)]
      public UserCollection Users {
           get { return this["users"] as UserCollection; }
      }
}

[ConfigurationCollection(typeof(UserElement),
     AddItemName = "user"]
public class UsersCollection : ConfigurationElementCollection {
      protected override ConfigurationElement CreateNewElement() {
            return new UserElement();
      }

      protected override object GetElementKey(ConfigurationElement element) {
            return ((UserElement)element).Name;
      }
}

public class UserElement : ConfigurationElement {

     [ConfigurationProperty("name",
                            IsRequired = true,
                            IsKey = true)]
     public string Name {
          get { return this["name"] as string; }
          set { this["name"] = value; }
     }
}

然后,我可以创建以下XML配置节:

代码语言:javascript
复制
<users-config>
      <users>
            <user name="Matt458" />
            <user name="JohnLennon" />
      </users>
</users-config>

我想要实现的是保持具有相同的UsersConfig类,但我不想将它映射到XML,而是希望将它映射到JSON:

代码语言:javascript
复制
{
    "users": [
        {
            "name": "Matt458"
        },
        {
             "name": "JohnLennon"
        }
    ]
}
EN

回答 5

Stack Overflow用户

发布于 2015-05-13 15:20:35

这个库可能会对您有所帮助:https://github.com/Dynalon/JsonConfig

从文档中:

JSON JsonConfig是一个简单易用的配置库,允许C#/.NET应用程序使用基于

的配置文件,而不是繁琐的web.config/application.config xml文件。它基于JsonFX和C# 4.0的动态特性。允许将程序配置文件放入.json文件中,其中默认配置可以作为资源嵌入或放入(web-)应用程序文件夹中。可以通过动态类型访问配置,不需要自定义类或任何其他存根代码。JsonConfig带来了对配置继承的支持,这意味着一组配置文件可用于在运行时具有单个范围的配置,该配置是所有提供的配置文件的合并版本。

票数 3
EN

Stack Overflow用户

发布于 2015-05-09 07:50:44

如果我理解正确的话,您实际上希望将web.config部分定义为JSON而不是XML.

据我所知,目前还没有现成的东西可以做到这一点。但是,一种可能的解决方案是使用Gulp动态编写web.config文件,作为构建步骤的一部分。我没有一个具体的例子,因为我不知道有人这样做,但这可能会给你一个指针。

首先看看这篇文章,它讨论了如何使用xmlpoke模块编写XML:

http://www.mikeobrien.net/blog/using-gulp-to-build-and-deploy-dotnet-apps-on-windows/

在Gulp中读取JSON将是小菜一碟,因此只需将JSON映射到XML即可。然后,您可以通过编辑Gulp xml文件将.proj任务添加到构建步骤中(gulp应该全局安装在正在执行构建的机器上)。

  1. 在文本编辑器中打开项目文件,然后找到此部分:

  • 使用gulp命令替换注释

gulp任务名

另一种方法是使用Newtonsoft等库从磁盘读取JSON文件。然后创建您自己的属性和系统,用于将值映射到类中的属性。这不是直接的,但肯定可以通过一些努力来完成。

票数 1
EN

Stack Overflow用户

发布于 2015-05-13 15:59:20

我推荐使用FX.configuration,你可以从NuGet添加它。您可以在以下位置找到:http://nugetmusthaves.com/Package/FX.Configuration

可以在以下位置找到一些代码示例:https://bitbucket.org/friendlyx/fx.configuration

它使您能够添加到名称内容,如:< add key="JsonConfig“value="{ 'Id':'42','Name':'foo‘}”/>

使用FX.configuration时的另一种选择是添加一个包含所有配置的新config.json文件,并在创建实例时读取和解析该文件。

下面的代码完全符合您对新的json配置文件的要求。

代码语言:javascript
复制
using System.Collections.Generic;
using FX.Configuration;
namespace JsonConfigurationConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            var config = new Users();
        }
    }
    public class Users : JsonConfiguration
    {
        public List<User> users { get; set; }
    }
    public class User
    {
        public string name { get; set; }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30042795

复制
相关文章

相似问题

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