如何在azure函数中的local.settings.json文件中设置数组值

时间:2017-10-31 00:03:18

标签: c# azure

当我尝试将数组作为 local.settings.json 文件中的一个值插入时:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "AzureWebJobsDashboard": "",
    "myArray": [
      {
        "key1": "value1",
        "key2": "value2"
      },
      {
        "key1": "value3",
        "key2": "value4"
      }
    ]
  },
  "ConnectionStrings": {
    "SQLConnectionString": "myConnectionString"
  }
}

我开始得到例外。可以在local.settings.json文件中使用数组吗?如果他们可以,那么正确的格式是什么?

5 个答案:

答案 0 :(得分:5)

您需要使用数组索引器格式。

例如

"myArray:[0]:key1": "value1",
"myArray:[0]:key2": "value2",
"myArray:[1]:key1": "value3",
"myArray:[1]:key2": "value4"

答案 1 :(得分:5)

现在可以!

我的本​​地设置文件如下:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true"
  },
  "CustomArray": [
    {
      "CustomProp1": "foo0",
      "CustomProp2": "bar0"
    },
    {
      "CustomProp1": "foo1",
      "CustomProp2": "bar1"
    }
  ]
}

当部署到Azure时,我的配置如下所示: Azure Function Settings Screenshot

然后,要在我的启动程序中解析该数组,我会看到以下内容:

var settings = new List<CustomSetting>();
config.GetSection("CustomArray").Bind(settings);

...其中CustomSetting是这样的类:

public class CustomSetting 
{
    public string CustomProp1 { get; set; }
    public string CustomProp2 { get; set; }
}

我正在使用Microsoft.Extensions.Configuration Nuget软件包的3.1.5版本和Microsoft.NET.Sdk.Functions Azure Functions SDK的3.0.7版本。

答案 2 :(得分:4)

在local.settings.json文件中添加类似字符串的数组:

"myArray": "[
             {
               \"key1\": \"value1\",
               \"key2\": \"value2\"
             },
             {
               \"key1\": \"value3\",
               \"key2\": \"value4\"
             }
            ]"

然后在代码中反序列化,如下所示:

string value = Environment.GetEnvironmentVariable("myArray");

objList = JsonConvert.DeserializeObject<List<object>>(value);

答案 3 :(得分:1)

  

可以在local.settings.json文件中使用数组吗?如果他们可以,那么正确的格式是什么?

目前local.settings.json中似乎不支持 arrarys

据我所知,值集合应该是 Dictionary ,如果它包含任何非字符串值,则会导致Azure函数无法读取值local.settings.json

根据我的测试,如果它包含它将返回 null

 "myArray": [
      {
        "key1": "value1",
        "key2": "value2"
      },
      {
        "key1": "value3",
        "key2": "value4"
      }
    ]

enter image description here

答案 4 :(得分:0)

我找到了一个无需复杂的解决方案,您可以简单地如下创建一个数组,该数组可以在Azure Functions中的local.settings.json文件中完美运行-

"myArray": "[\"Value1\",\"Value2\"]"