Objektfunktioner för ARM-mallar
Resource Manager innehåller flera funktioner för att arbeta med objekt i din Azure Resource Manager-mall (ARM-mall):
Dricks
Vi rekommenderar Bicep eftersom det erbjuder samma funktioner som ARM-mallar och syntaxen är enklare att använda. Mer information finns i objektfunktioner .
innehåller
contains(container, itemToFind)
Kontrollerar om en matris innehåller ett värde, ett objekt innehåller en nyckel eller om en sträng innehåller en delsträng. Strängjämförelsen är skiftlägeskänslig. Men när du testar om ett objekt innehåller en nyckel är jämförelsen skiftlägeskänslig.
I Bicep använder du funktionen contains .
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
container | Ja | matris, objekt eller sträng | Värdet som innehåller det värde som ska hittas. |
itemToFind | Ja | sträng eller int | Värdet som ska hittas. |
Returvärde
Sant om objektet hittas, annars Falskt.
Exempel
I följande exempel visas hur du använder contains
med olika typer:
{
"$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')]"
}
}
}
Utdata från föregående exempel med standardvärdena är:
Namn | Typ | Värde |
---|---|---|
stringTrue | Bool | Sant |
stringFalse | Bool | Falsk |
objectTrue | Bool | Sant |
objectFalse | Bool | Falsk |
arrayTrue | Bool | Sant |
arrayFalse | Bool | Falsk |
Createobject
createObject(key1, value1, key2, value2, ...)
Skapar ett objekt från nycklar och värden.
Funktionen createObject
stöds inte av Bicep. Skapa ett objekt med hjälp {}
av . Se Objekt.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
key1 | Nej | sträng | Namnet på nyckeln. |
value1 | Nej | int, boolesk, sträng, objekt eller matris | Värdet för nyckeln. |
fler nycklar | Nej | sträng | Fler namn på nycklarna. |
fler värden | Nej | int, boolesk, sträng, objekt eller matris | Fler värden för nycklarna. |
Funktionen accepterar bara ett jämnt antal parametrar. Varje nyckel måste ha ett matchande värde.
Returvärde
Ett objekt med varje nyckel- och värdepar.
Exempel
I följande exempel skapas ett objekt från olika typer av värden.
{
"$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'))]"
}
}
}
Utdata från föregående exempel med standardvärdena är ett objekt med namnet newObject
med följande värde:
{
"intProp": 1,
"stringProp": "abc",
"boolProp": true,
"arrayProp": ["a", "b", "c"],
"objectProp": {"key1": "value1"}
}
empty
empty(itemToTest)
Avgör om en matris, ett objekt eller en sträng är tom.
Använd den tomma funktionen i Bicep.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
itemToTest | Ja | matris, objekt eller sträng | Värdet för att kontrollera om det är tomt. |
Returvärde
Returnerar Sant om värdet är tomt, annars Falskt.
Exempel
I följande exempel kontrolleras om en matris, ett objekt och en sträng är tomma.
{
"$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'))]"
}
}
}
Utdata från föregående exempel med standardvärdena är:
Namn | Typ | Värde |
---|---|---|
arrayEmpty | Bool | Sant |
objectEmpty | Bool | Sant |
stringEmpty | Bool | Sant |
Korsningen
intersection(arg1, arg2, arg3, ...)
Returnerar en enskild matris eller ett objekt med de gemensamma elementen från parametrarna.
Använd skärningsfunktionen i Bicep.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
arg1 | Ja | matris eller objekt | Det första värdet som ska användas för att hitta vanliga element. |
arg2 | Ja | matris eller objekt | Det andra värdet som ska användas för att hitta vanliga element. |
fler argument | Nej | matris eller objekt | Fler värden att använda för att hitta vanliga element. |
Returvärde
En matris eller ett objekt med de gemensamma elementen.
Exempel
I följande exempel visas hur du använder intersection
med matriser och objekt.
{
"$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'))]"
}
}
}
Utdata från föregående exempel med standardvärdena är:
Namn | Typ | Värde |
---|---|---|
objectOutput | Objekt | {"one": "a", "three": "c"} |
arrayOutput | Matris | ["två", "tre"] |
objekt
items(object)
Konverterar ett ordlisteobjekt till en matris. Se toObject om att konvertera en matris till ett objekt.
Använd objekten i Bicep.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
objekt | Ja | objekt | Ordlisteobjektet som ska konverteras till en matris. |
Returvärde
En matris med objekt för den konverterade ordlistan. Varje objekt i matrisen har en key
egenskap som innehåller nyckelvärdet för ordlistan. Varje objekt har också en value
egenskap som innehåller egenskaperna för objektet.
Exempel
I följande exempel konverteras ett ordlisteobjekt till en matris. För varje objekt i matrisen skapas ett nytt objekt med ändrade värden.
{
"$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')]"
}
}
}
Föregående exempel returnerar:
"modifiedResult": {
"type": "Array",
"value": [
{
"fullName": "Example item 1",
"itemEnabled": true,
"key": "item001"
},
{
"fullName": "Example item 2",
"itemEnabled": false,
"key": "item002"
}
]
}
I följande exempel visas matrisen som returneras från objektfunktionen.
{
"$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')]"
}
}
}
Exemplet returnerar:
"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
}
}
]
}
I JSON är ett objekt en osorterad samling med noll eller fler nyckel/värde-par. Beställningen kan variera beroende på implementeringarna. Funktionen Bicep items() sorterar till exempel objekten i alfabetisk ordning. På andra ställen kan den ursprungliga ordningen bevaras. På grund av denna icke-determinism bör du undvika att göra några antaganden om ordningen på objektnycklar när du skriver kod, som interagerar med distributionsparametrar och utdata.
json
json(arg1)
Konverterar en giltig JSON-sträng till en JSON-datatyp.
Använd json-funktionen i Bicep.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
arg1 | Ja | sträng | Värdet som ska konverteras till JSON. Strängen måste vara en korrekt formaterad JSON-sträng. |
Returvärde
JSON-datatypen från den angivna strängen eller ett tomt värde när null anges.
Kommentarer
Om du behöver inkludera ett parametervärde eller en variabel i JSON-objektet använder du formatfunktionen för att skapa strängen som du skickar till funktionen.
Du kan också använda null() för att hämta ett null-värde.
Exempel
I följande exempel visas hur du json
använder funktionen. Observera att du kan skicka in null
för ett tomt objekt.
{
"$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'), '\"}'))]"
}
}
}
Utdata från föregående exempel med standardvärdena är:
Namn | Typ | Värde |
---|---|---|
emptyObjectOutput | Booleskt | Sant |
objectOutput | Objekt | {"a": "b"} |
stringOutput | String | test |
booleanOutput | Booleskt | Sant |
intOutput | Integer | 3 |
arrayOutput | Matris | [ 1, 2, 3 ] |
concatObjectOutput | Objekt | { "a": "demo value" } |
längd
length(arg1)
Returnerar antalet element i en matris, tecken i en sträng eller rotnivåegenskaper i ett objekt.
Använd längdfunktionen i Bicep.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
arg1 | Ja | matris, sträng eller objekt | Matrisen som ska användas för att hämta antalet element, strängen som ska användas för att hämta antalet tecken eller det objekt som ska användas för att hämta antalet egenskaper på rotnivå. |
Returvärde
Ett int.
Exempel
I följande exempel visas hur du använder length
med en matris och sträng:
{
"$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'))]"
}
}
}
Utdata från föregående exempel med standardvärdena är:
Namn | Typ | Värde |
---|---|---|
arrayLength | Int | 3 |
stringLength | Int | 13 |
objectLength | Int | 4 |
NULL
null()
Returnerar null.
Funktionen null
är inte tillgänglig i Bicep. Använd nyckelordet null
i stället.
Parametrar
Null-funktionen accepterar inga parametrar.
Returvärde
Ett värde som alltid är null.
Exempel
I följande exempel används null-funktionen.
{
"$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())]"
}
}
}
Utdata från föregående exempel är:
Namn | Typ | Värde |
---|---|---|
emptyOutput | Bool | Sant |
objectKeys
objectKeys(object)
Returnerar nycklarna från ett objekt, där ett objekt är en samling nyckel/värde-par.
I Bicep använder du funktionen objectKeys .
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
objekt | Ja | objekt | Objektet, som är en samling nyckel/värde-par. |
Returvärde
En matris.
Exempel
I följande exempel visas hur du använder objectKeys
med ett objekt:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"obj": {
"a": 1,
"b": 2
}
},
"resources": [],
"outputs": {
"keyArray": {
"type": "array",
"value": "[objectKeys(variables('obj'))]"
}
}
}
Utdata från föregående exempel är:
Namn | Typ | Värde |
---|---|---|
keyArray | Matris | [ "a", "b" ] |
I JSON är ett objekt en osorterad samling med noll eller fler nyckel/värde-par. Beställningen kan variera beroende på implementeringarna. Funktionen Bicep items() sorterar till exempel objekten i alfabetisk ordning. På andra ställen kan den ursprungliga ordningen bevaras. På grund av denna icke-determinism bör du undvika att göra några antaganden om ordningen på objektnycklar när du skriver kod, som interagerar med distributionsparametrar och utdata.
shallowMerge
shallowMerge(inputArray)
Kombinerar en matris med objekt, där endast de översta objekten sammanfogas. Det innebär att om objekten som sammanfogas innehåller kapslade objekt sammanfogas inte de kapslade objekten djupt. I stället ersätts de helt av motsvarande egenskap från det sammanfogande objektet.
Använd funktionen shallowMerge i Bicep.
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
inputArray | Ja | matris | En matris med objekt. |
Returvärde
Ett objekt.
Exempel
I följande exempel visas hur du använder shallowMerge
:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"variables": {
"firstArray": [
{
"one": "a"
},
{
"two": "b"
},
{
"two": "c"
}
],
"secondArray": [
{
"one": "a",
"nested": {
"a": 1,
"nested": {
"c": 3
}
}
},
{
"two": "b",
"nested": {
"b": 2
}
}
]
},
"resources": [],
"outputs": {
"firstOutput": {
"type": "object",
"value": "[shallowMerge(variables('firstArray'))]"
},
"secondOutput": {
"type": "object",
"value": "[shallowMerge(variables('secondArray'))]"
}
}
}
Utdata från föregående exempel med standardvärdena är:
Namn | Typ | Värde |
---|---|---|
firstOutput | objekt | {"en":"a","två":"c"} |
secondOutput | objekt | {"en":"a","kapslad":{"b":2},"två":"b"} |
firstOutput visar att egenskaperna från de sammanfogade objekten kombineras till ett nytt objekt. Om det finns motstridiga egenskaper (dvs. egenskaper med samma namn) har egenskapen från det sista objektet som sammanfogades vanligtvis företräde.
secondOutput visar att den grunda sammanfogningen inte rekursivt sammanfogar dessa kapslade objekt. I stället ersätts hela det kapslade objektet med motsvarande egenskap från det sammanfogande objektet.
union
union(arg1, arg2, arg3, ...)
Returnerar en enskild matris eller ett objekt med alla element från parametrarna. För matriser inkluderas duplicerade värden en gång. För objekt inkluderas duplicerade egenskapsnamn bara en gång.
I Bicep använder du unionsfunktionen .
Parametrar
Parameter | Obligatoriskt | Type | Beskrivning |
---|---|---|---|
arg1 | Ja | matris eller objekt | Det första värdet som ska användas för att koppla element. |
arg2 | Ja | matris eller objekt | Det andra värdet som ska användas för att koppla element. |
fler argument | Nej | matris eller objekt | Fler värden att använda för att koppla element. |
Returvärde
En matris eller ett objekt.
Kommentarer
Union-funktionen använder sekvensen för parametrarna för att fastställa resultatets ordning och värden.
För matriser itererar funktionen genom varje element i den första parametern och lägger till den i resultatet om den inte redan finns. Sedan upprepas processen för den andra parametern och eventuella ytterligare parametrar. Om ett värde redan finns bevaras dess tidigare placering i matrisen.
För objekt läggs egenskapsnamn och värden från den första parametern till i resultatet. För senare parametrar läggs alla nya namn till i resultatet. Om en senare parameter har en egenskap med samma namn skriver det värdet över det befintliga värdet. Ordningen på egenskaperna är inte garanterad.
Union-funktionen sammanfogar inte bara elementen på den översta nivån utan sammanfogar även rekursivt alla kapslade matriser och objekt i dem. Se det andra exemplet i följande avsnitt.
Exempel
I följande exempel visas hur du använder union
med matriser och objekt:
{
"$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'))]"
}
}
}
Utdata från föregående exempel med standardvärdena är:
Namn | Typ | Värde |
---|---|---|
objectOutput | Objekt | {"one": "a", "two": "b", "three": "c2", "four": "d", "five": "e"} |
arrayOutput | Matris | ["en", "två", "tre", "fyra"] |
I följande exempel visas funktionen för djupsammanslagning:
{
"$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'))]"
}
}
}
Utdata från föregående exempel är:
Namn | Typ | Värde |
---|---|---|
objectOutput | Objekt | {"property":{"one":"a","two":"b","three":"c2","four":"d","five":"e"},"nestedArray":[3,4]} |
arrayOutput | Matris | [["one","two"],["three"],["four","two"]] |
Om kapslade matriser sammanfogades skulle värdet för objectOutput.nestedArray vara [1, 2, 3, 4], och värdet för arrayOutput skulle vara [["one", "two", "three"], ["three", "four", "two"]].
Nästa steg
- En beskrivning av avsnitten i en ARM-mall finns i Förstå strukturen och syntaxen för ARM-mallar.