【问题标题】:Json in Web.Config AppSettingsWeb.Config AppSettings 中的 Json
【发布时间】:2016-12-27 01:25:56
【问题描述】:

我正在尝试将一些映射配置放在 json 中:

[{"Name":"xyz","Ids":["456f782d468","c65b4703"]},{"Name":"abc","Ids":["a95fg567","456sdf564"]}]

是否可以在 appsettings 中存储 json?
我知道我可以在 web.config 中创建自定义部分。
但这个应用程序可能会部署到 Azure Web 应用程序,其中 appsettings 是我看到此配置的唯一方式。

【问题讨论】:

  • 没有。我相信您应该将字符串存储为 appsetting 项目值。为什么不存储自定义 settings.json 文件并从中读取?
  • 一年前我问过一个类似的问题:Building a JSON Configuration Section。希望对你有帮助

标签: c# asp.net json asp.net-mvc azure-web-app-service


【解决方案1】:

不太好。 web.config 是 XML,如果不将引号转义为“,则不允许在 XML 中使用引号。在 JSON 上这样做仍然会使读取/维护变得“困难”。Base64 serhiyb 是一种解决方案,但这将无法由以下人员维护一个人。

我会将它们存储为 appsettings 键/值对,然后在运行时生成 json 字符串。

如果你是 100% 字符串永远不会改变,那么转义或 Base64 是一种选择。

【讨论】:

    【解决方案2】:

    由于您的限制,我只需将其编码为 Base64 字符串,然后在您从 web.config 读取它时将其解码。

    【讨论】:

      【解决方案3】:

      如果您使用 " 而不是引号字符,那么您可以将 JSON 存储在应用设置或连接字符串中,而不会在 Web.config 中出现问题。例如:

      <add key="ThisIsJson" value="[{&quot;Name&quot;:&quot;xyz&quot;}]"/>
      

      这也不需要任何特殊处理,至少使用 Json.NET。

      【讨论】:

        【解决方案4】:

        在我的 web.config 中,方括号用于使用 {0} 或 {1} 等变量。 所以,我需要用这样的双括号来转义它们:

        <add key="ThisIsJson" value="{{&quot;Name&quot;:&quot;xyz&quot;}}"/>
        

        希望它会有所帮助。

        【讨论】:

          【解决方案5】:

          我使用单引号将序列化的模型存储在配置中,然后在从配置中读取后简单地反序列化。

                  var serialized = JsonConvert.SerializeObject(yourObject);
                  var configFriendlyString = serialized.Replace("\"", "'"); // store it in config file
                  var deserialized = JsonConvert.DeserializeObject<YourObjectModel>(configFriendlyString);
          

          序列化对象在配置中的外观示例:

          <add key="Categories" value="[{'ID':1,'Name':'All'},{'ID':2,'Name':'Review'}]" />
          

          这种方式易于阅读和编辑。请注意,JsonConvert 可以对其进行反序列化,而无需将单引号替换为双引号。

          【讨论】:

            猜你喜欢
            • 2017-10-19
            • 2010-09-08
            • 2012-05-30
            • 2011-09-11
            • 1970-01-01
            • 2011-08-26
            • 2018-05-28
            • 2011-11-01
            • 1970-01-01
            相关资源
            最近更新 更多