Objectfuncties voor ARM-sjablonen

Resource Manager biedt verschillende functies voor het werken met objecten in uw Azure Resource Manager-sjabloon (ARM-sjabloon):

Tip

We raden Bicep aan omdat het dezelfde mogelijkheden biedt als ARM-sjablonen en de syntaxis gemakkelijker te gebruiken is. Zie objectfuncties voor meer informatie.

bevat

contains(container, itemToFind)

Hiermee wordt gecontroleerd of een matrix een waarde bevat, een object een sleutel bevat of een tekenreeks een subtekenreeks bevat. De tekenreeksvergelijking is hoofdlettergevoelig. Wanneer u echter test of een object een sleutel bevat, is de vergelijking niet hoofdlettergevoelig.

Gebruik in Bicep de functie contains .

Parameters

Parameter Vereist Type Description
container Ja matrix, object of tekenreeks De waarde die de te zoeken waarde bevat.
itemToFind Ja tekenreeks of int De te vinden waarde.

Retourwaarde

Waar als het item wordt gevonden; anders onwaar.

Opmerking

In het volgende voorbeeld ziet u hoe u deze kunt gebruiken met verschillende typen:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "stringToTest": {
      "type": "string",
      "defaultValue": "OneTwoThree"
    },
    "objectToTest": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c"
      }
    },
    "arrayToTest": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "stringTrue": {
      "type": "bool",
      "value": "[contains(parameters('stringToTest'), 'e')]"
    },
    "stringFalse": {
      "type": "bool",
      "value": "[contains(parameters('stringToTest'), 'z')]"
    },
    "objectTrue": {
      "type": "bool",
      "value": "[contains(parameters('objectToTest'), 'one')]"
    },
    "objectFalse": {
      "type": "bool",
      "value": "[contains(parameters('objectToTest'), 'a')]"
    },
    "arrayTrue": {
      "type": "bool",
      "value": "[contains(parameters('arrayToTest'), 'three')]"
    },
    "arrayFalse": {
      "type": "bool",
      "value": "[contains(parameters('arrayToTest'), 'four')]"
    }
  }
}

De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:

Name Type Weergegeven als
stringTrue Bool Waar
stringFalse Bool Onwaar
objectTrue Bool Waar
objectFalse Bool Onwaar
arrayTrue Bool Waar
arrayFalse Bool Onwaar

Createobject

createObject(key1, value1, key2, value2, ...)

Hiermee maakt u een object op basis van de sleutels en waarden.

De createObject functie wordt niet ondersteund door Bicep. Maak een object met behulp van {}. Zie objecten.

Parameters

Parameter Vereist Type Description
key1 Nee tekenreeks De naam van de sleutel.
waarde1 Nee int, booleaanse waarde, tekenreeks, object of matrix De waarde voor de sleutel.
meer sleutels Nee tekenreeks Meer namen van de sleutels.
meer waarden Nee int, booleaanse waarde, tekenreeks, object of matrix Meer waarden voor de sleutels.

De functie accepteert alleen een even aantal parameters. Elke sleutel moet een overeenkomende waarde hebben.

Retourwaarde

Een object met elke sleutel en waardepaar.

Opmerking

In het volgende voorbeeld wordt een object gemaakt op basis van verschillende typen waarden.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
  ],
  "outputs": {
    "newObject": {
      "type": "object",
      "value": "[createObject('intProp', 1, 'stringProp', 'abc', 'boolProp', true(), 'arrayProp', createArray('a', 'b', 'c'), 'objectProp', createObject('key1', 'value1'))]"
    }
  }
}

De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is een object met newObject de volgende waarde:

{
  "intProp": 1,
  "stringProp": "abc",
  "boolProp": true,
  "arrayProp": ["a", "b", "c"],
  "objectProp": {"key1": "value1"}
}

empty

empty(itemToTest)

Bepaalt of een matrix, object of tekenreeks leeg is.

Gebruik in Bicep de lege functie.

Parameters

Parameter Vereist Type Description
itemToTest Ja matrix, object of tekenreeks De waarde om te controleren of deze leeg is.

Retourwaarde

Retourneert Waar als de waarde leeg is; anders Onwaar.

Opmerking

In het volgende voorbeeld wordt gecontroleerd of een matrix, object en tekenreeks leeg zijn.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "testArray": {
      "type": "array",
      "defaultValue": []
    },
    "testObject": {
      "type": "object",
      "defaultValue": {}
    },
    "testString": {
      "type": "string",
      "defaultValue": ""
    }
  },
  "resources": [
  ],
  "outputs": {
    "arrayEmpty": {
      "type": "bool",
      "value": "[empty(parameters('testArray'))]"
    },
    "objectEmpty": {
      "type": "bool",
      "value": "[empty(parameters('testObject'))]"
    },
    "stringEmpty": {
      "type": "bool",
      "value": "[empty(parameters('testString'))]"
    }
  }
}

De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:

Name Type Weergegeven als
arrayEmpty Bool Waar
objectEmpty Bool Waar
stringEmpty Bool Waar

Snijpunt

intersection(arg1, arg2, arg3, ...)

Retourneert één matrix of object met de algemene elementen van de parameters.

Gebruik in Bicep de snijpuntfunctie .

Parameters

Parameter Vereist Type Description
arg1 Ja matrix of object De eerste waarde die moet worden gebruikt voor het vinden van algemene elementen.
arg2 Ja matrix of object De tweede waarde die moet worden gebruikt voor het vinden van algemene elementen.
meer argumenten Nee matrix of object Meer waarden die moeten worden gebruikt voor het vinden van algemene elementen.

Retourwaarde

Een matrix of object met de gemeenschappelijke elementen.

Opmerking

In het volgende voorbeeld ziet u hoe u snijpunt gebruikt met matrices en objecten.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstObject": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c"
      }
    },
    "secondObject": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "z",
        "three": "c"
      }
    },
    "firstArray": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    },
    "secondArray": {
      "type": "array",
      "defaultValue": [ "two", "three" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "objectOutput": {
      "type": "object",
      "value": "[intersection(parameters('firstObject'), parameters('secondObject'))]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[intersection(parameters('firstArray'), parameters('secondArray'))]"
    }
  }
}

De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:

Name Type Weergegeven als
objectOutput Object {"one": "a", "three": "c"}
arrayOutput Matrix ["twee", "drie"]

items

items(object)

Converteert een woordenlijstobject naar een matrix. Zie toObject over het converteren van een matrix naar een object.

Gebruik in Bicep de items.

Parameters

Parameter Vereist Type Description
object Ja object Het woordenlijstobject dat moet worden geconverteerd naar een matrix.

Retourwaarde

Een matrix met objecten voor de geconverteerde woordenlijst. Elk object in de matrix heeft een key eigenschap die de sleutelwaarde voor de woordenlijst bevat. Elk object heeft ook een value eigenschap die de eigenschappen voor het object bevat.

Opmerking

In het volgende voorbeeld wordt een woordenlijstobject geconverteerd naar een matrix. Voor elk object in de matrix wordt een nieuw object met gewijzigde waarden gemaakt.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "copy": [
      {
        "name": "modifiedListOfEntities",
        "count": "[length(items(variables('entities')))]",
        "input": {
          "key": "[items(variables('entities'))[copyIndex('modifiedListOfEntities')].key]",
          "fullName": "[items(variables('entities'))[copyIndex('modifiedListOfEntities')].value.displayName]",
          "itemEnabled": "[items(variables('entities'))[copyIndex('modifiedListOfEntities')].value.enabled]"
        }
      }
    ],
    "entities": {
      "item002": {
        "enabled": false,
        "displayName": "Example item 2",
        "number": 200
      },
      "item001": {
        "enabled": true,
        "displayName": "Example item 1",
        "number": 300
      }
    }
  },
  "resources": [],
  "outputs": {
    "modifiedResult": {
      "type": "array",
      "value": "[variables('modifiedListOfEntities')]"
    }
  }
}

In het voorgaande voorbeeld wordt het volgende geretourneerd:

"modifiedResult": {
  "type": "Array",
  "value": [
    {
      "fullName": "Example item 1",
      "itemEnabled": true,
      "key": "item001"
    },
    {
      "fullName": "Example item 2",
      "itemEnabled": false,
      "key": "item002"
    }
  ]
}

In het volgende voorbeeld ziet u de matrix die wordt geretourneerd vanuit de itemsfunctie.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "entities": {
      "item002": {
        "enabled": false,
        "displayName": "Example item 2",
        "number": 200
      },
      "item001": {
        "enabled": true,
        "displayName": "Example item 1",
        "number": 300
      }
    },
    "entitiesArray": "[items(variables('entities'))]"
  },
  "resources": [],
  "outputs": {
    "itemsResult": {
      "type": "array",
      "value": "[variables('entitiesArray')]"
    }
  }
}

Het voorbeeld retourneert:

"itemsResult": {
  "type": "Array",
  "value": [
    {
      "key": "item001",
      "value": {
        "displayName": "Example item 1",
        "enabled": true,
        "number": 300
      }
    },
    {
      "key": "item002",
      "value": {
        "displayName": "Example item 2",
        "enabled": false,
        "number": 200
      }
    }
  ]
}

In JSON is een object een niet-geordende verzameling van nul of meer sleutel-waardeparen. De volgorde kan verschillen, afhankelijk van de implementaties. De functie Bicep items() sorteert bijvoorbeeld de objecten in alfabetische volgorde. Op andere plaatsen kan de oorspronkelijke volgorde behouden blijven. Vanwege dit niet-determinisme vermijdt u veronderstellingen over de volgorde van objectsleutels bij het schrijven van code, die communiceert met implementatieparameters en uitvoer.

json

json(arg1)

Converteert een geldige JSON-tekenreeks naar een JSON-gegevenstype.

Gebruik in Bicep de json-functie .

Parameters

Parameter Vereist Type Description
arg1 Ja tekenreeks De waarde die moet worden geconverteerd naar JSON. De tekenreeks moet een juist opgemaakte JSON-tekenreeks zijn.

Retourwaarde

Het JSON-gegevenstype uit de opgegeven tekenreeks of een lege waarde wanneer null is opgegeven.

Opmerkingen

Als u een parameterwaarde of variabele wilt opnemen in het JSON-object, gebruikt u de notatiefunctie om de tekenreeks te maken die u aan de functie doorgeeft.

U kunt ook null() gebruiken om een null-waarde op te halen.

Opmerking

In het volgende voorbeeld ziet u hoe u de json functie gebruikt. U ziet dat u kunt doorgeven null voor een leeg object.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "jsonEmptyObject": {
      "type": "string",
      "defaultValue": "null"
    },
    "jsonObject": {
      "type": "string",
      "defaultValue": "{\"a\": \"b\"}"
    },
    "jsonString": {
      "type": "string",
      "defaultValue": "\"test\""
    },
    "jsonBoolean": {
      "type": "string",
      "defaultValue": "true"
    },
    "jsonInt": {
      "type": "string",
      "defaultValue": "3"
    },
    "jsonArray": {
      "type": "string",
      "defaultValue": "[[1,2,3 ]"
    },
    "concatValue": {
      "type": "string",
      "defaultValue": "demo value"
    }
  },
  "resources": [
  ],
  "outputs": {
    "emptyObjectOutput": {
      "type": "bool",
      "value": "[empty(json(parameters('jsonEmptyObject')))]"
    },
    "objectOutput": {
      "type": "object",
      "value": "[json(parameters('jsonObject'))]"
    },
    "stringOutput": {
      "type": "string",
      "value": "[json(parameters('jsonString'))]"
    },
    "booleanOutput": {
      "type": "bool",
      "value": "[json(parameters('jsonBoolean'))]"
    },
    "intOutput": {
      "type": "int",
      "value": "[json(parameters('jsonInt'))]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[json(parameters('jsonArray'))]"
    },
    "concatObjectOutput": {
      "type": "object",
      "value": "[json(concat('{\"a\": \"', parameters('concatValue'), '\"}'))]"
    }
  }
}

De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:

Name Type Weergegeven als
emptyObjectOutput Booleaanse waarde Waar
objectOutput Object {"a": "b"}
stringOutput String test
Booleaanseoutput Booleaanse waarde Waar
intOutput Geheel getal 3
arrayOutput Matrix [ 1, 2, 3 ]
concatObjectOutput Object { "a": "demo value" }

length

length(arg1)

Retourneert het aantal elementen in een matrix, tekens in een tekenreeks of eigenschappen op hoofdniveau in een object.

Gebruik in Bicep de lengtefunctie .

Parameters

Parameter Vereist Type Description
arg1 Ja matrix, tekenreeks of object De matrix die moet worden gebruikt voor het ophalen van het aantal elementen, de tekenreeks die moet worden gebruikt voor het ophalen van het aantal tekens of het object dat moet worden gebruikt voor het ophalen van het aantal eigenschappen op hoofdniveau.

Retourwaarde

Een int.

Opmerking

In het volgende voorbeeld ziet u hoe u lengte gebruikt met een matrix en tekenreeks:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "arrayToTest": {
      "type": "array",
      "defaultValue": [
        "one",
        "two",
        "three"
      ]
    },
    "stringToTest": {
      "type": "string",
      "defaultValue": "One Two Three"
    },
    "objectToTest": {
      "type": "object",
      "defaultValue": {
        "propA": "one",
        "propB": "two",
        "propC": "three",
        "propD": {
          "propD-1": "sub",
          "propD-2": "sub"
        }
      }
    }
  },
  "resources": [],
  "outputs": {
    "arrayLength": {
      "type": "int",
      "value": "[length(parameters('arrayToTest'))]"
    },
    "stringLength": {
      "type": "int",
      "value": "[length(parameters('stringToTest'))]"
    },
    "objectLength": {
      "type": "int",
      "value": "[length(parameters('objectToTest'))]"
    }
  }
}

De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:

Name Type Weergegeven als
arrayLength Int 3
stringLength Int 13
objectLength Int 4

Nul

null()

Retourneert null.

De null functie is niet beschikbaar in Bicep. Gebruik in plaats daarvan het null trefwoord.

Parameters

De null-functie accepteert geen parameters.

Retourwaarde

Een waarde die altijd null is.

Opmerking

In het volgende voorbeeld wordt de null-functie gebruikt.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "emptyOutput": {
      "type": "bool",
      "value": "[empty(null())]"
    }
  }
}

De uitvoer uit het voorgaande voorbeeld is:

Name Type Weergegeven als
emptyOutput Bool Waar

union

union(arg1, arg2, arg3, ...)

Retourneert één matrix of object met alle elementen uit de parameters. Voor matrices worden dubbele waarden eenmaal opgenomen. Voor objecten worden dubbele eigenschapsnamen slechts eenmaal opgenomen.

Gebruik in Bicep de samenvoegfunctie .

Parameters

Parameter Vereist Type Description
arg1 Ja matrix of object De eerste waarde die moet worden gebruikt voor het samenvoegen van elementen.
arg2 Ja matrix of object De tweede waarde die moet worden gebruikt voor het samenvoegen van elementen.
meer argumenten Nee matrix of object Meer waarden die moeten worden gebruikt voor het samenvoegen van elementen.

Retourwaarde

Een matrix of object.

Opmerkingen

De samenvoegfunctie gebruikt de volgorde van de parameters om de volgorde en waarden van het resultaat te bepalen.

Voor matrices doorloopt de functie elk element in de eerste parameter en voegt deze toe aan het resultaat als deze nog niet aanwezig is. Vervolgens wordt het proces voor de tweede parameter en eventuele aanvullende parameters herhaald. Als een waarde al aanwezig is, blijft de eerdere plaatsing in de matrix behouden.

Voor objecten worden eigenschapsnamen en -waarden uit de eerste parameter toegevoegd aan het resultaat. Voor latere parameters worden eventuele nieuwe namen toegevoegd aan het resultaat. Als een latere parameter een eigenschap met dezelfde naam heeft, overschrijft die waarde de bestaande waarde. De volgorde van de eigenschappen wordt niet gegarandeerd.

De samenvoegfunctie voegt niet alleen de elementen op het hoogste niveau samen, maar voegt ook recursief alle geneste matrices en objecten daarin samen. Zie het tweede voorbeeld in de volgende sectie.

Opmerking

In het volgende voorbeeld ziet u hoe u samenvoeging gebruikt met matrices en objecten:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "firstObject": {
      "type": "object",
      "defaultValue": {
        "one": "a",
        "two": "b",
        "three": "c1"
      }
    },
    "secondObject": {
      "type": "object",
      "defaultValue": {
        "three": "c2",
        "four": "d",
        "five": "e"
      }
    },
    "firstArray": {
      "type": "array",
      "defaultValue": [ "one", "two", "three" ]
    },
    "secondArray": {
      "type": "array",
      "defaultValue": [ "three", "four" ]
    }
  },
  "resources": [
  ],
  "outputs": {
    "objectOutput": {
      "type": "object",
      "value": "[union(parameters('firstObject'), parameters('secondObject'))]"
    },
    "arrayOutput": {
      "type": "array",
      "value": "[union(parameters('firstArray'), parameters('secondArray'))]"
    }
  }
}

De uitvoer uit het voorgaande voorbeeld met de standaardwaarden is:

Name Type Weergegeven als
objectOutput Object {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"}
arrayOutput Matrix ["één", "twee", "drie", "vier"]

In het volgende voorbeeld ziet u de uitgebreide samenvoegfunctie:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "variables": {
    "firstObject": {
      "property": {
        "one": "a",
        "two": "b",
        "three": "c1"
      },
      "nestedArray": [
        1,
        2
      ]
    },
    "secondObject": {
      "property": {
        "three": "c2",
        "four": "d",
        "five": "e"
      },
      "nestedArray": [
        3,
        4
      ]
    },
    "firstArray": [
      [
        "one",
        "two"
      ],
      [
        "three"
      ]
    ],
    "secondArray": [
      [
        "three"
      ],
      [
        "four",
        "two"
      ]
    ]
  },
  "resources": [],
  "outputs": {
    "objectOutput": {
      "type": "Object",
      "value": "[union(variables('firstObject'), variables('secondObject'))]"
    },
    "arrayOutput": {
      "type": "Array",
      "value": "[union(variables('firstArray'), variables('secondArray'))]"
    }
  }
}

De uitvoer uit het voorgaande voorbeeld is:

Name Type Weergegeven als
objectOutput Object {"property":{"one":"a","two":"b","three":"c2","four":"d","five":"e"},"nestedArray":[3,4]}
arrayOutput Matrix [["één","twee"],["drie"],["vier","twee"]]

Als geneste matrices zijn samengevoegd, is de waarde van objectOutput.nestedArray [1, 2, 3, 4] en de waarde van arrayOutput [["one", "two", "three",["three", "four", "two"]].

Volgende stappen