JSON可选字段,而不是必填字段

时间:2019-08-23 12:42:28

标签: json azure

我想使我的vNet Id 2参数字段对于数据是可选的,而不是必需的,因为在这两个字段中并不总是需要数据。

我对JSON很陌生,该模板是Microsoft的副本:https://docs.microsoft.com/en-us/azure/governance/policy/samples/use-approved-vnet-vm-nics

我只希望vNet Id 2对数据是可选的,而不是必需的。

{
  "mode": "Indexed",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Network/networkInterfaces"
        },
        {
          "not": {
            "field": "Microsoft.Network/networkInterfaces/ipconfigurations[*].subnet.id",
            "like": "[concat(parameters('vNetId'),'*')]"
          }
        },
        {
          "not": {
            "field": "Microsoft.Network/networkInterfaces/ipconfigurations[*].subnet.id",
            "like": "[concat(parameters('vNetId2'), '*')]"
          }
        }
      ]
    },
    "then": {
      "effect": "deny"
    }
  },
  "parameters": {
    "vNetId": {
      "type": "String",
      "metadata": {
        "displayName": "vNet Id",
        "description": "Resource Id for the vNet"
      }
    },
    "vNetId2": {
      "type": "String",
      "metadata":{
        "displayName": "vNet Id 2",
        "description": "Resource Id for the vNet"
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

根据Microsoft docs for parameters,您可以在参数对象中指定一个defaultValue字段,当不提供值时将使用该字段,从而有效地使其成为可选字段,即

"vNetId2": {
  "type": "String",
  "defaultValue": "",
  "metadata": {
    "displayName": "vNet Id 2",
    "description": "Resource Id for the vNet"
  }
}

请注意,根据this answer,在类似问题上,您必须使用空字符串而不是null