Dela via


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