

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# JSONata-Ausdrucksreferenz für Funktionen
<a name="monetization-functions-jsonata"></a>

Diese Seite enthält eine vollständige Referenz zur Ausdruckssyntax, zu Operatoren und Funktionen, die in Funktionen verfügbar sind. Verwenden Sie es, wenn Sie Ausdrücke für Ausgabeblöcke, URL-Felder, Header-Werte, Textvorlagen und Ausführungsbedingungen schreiben.

## Trennzeichen für Ausdrücke
<a name="monetization-functions-jsonata-delimiters"></a>

Jeder Wert, den Sie in einer Funktion definieren, ist entweder eine Konstante oder ein Ausdruck — keine Mischung aus beidem. MediaTailor unterscheidet anhand von Trennzeichen zwischen den beiden.


| Syntax | Typ | Bewertung | 
| --- | --- | --- | 
| https://ads.example.com/vast | Konstante | Ohne Bewertung unverändert zurückgegeben. | 
| {%session.client\_ip%} | Expression | Zur Laufzeit ausgewertet. Das Ergebnis ersetzt den gesamten Wert. | 
| GET | Konstante | Unverändert zurückgegeben. | 
| {%'https://ads.example.com/vast?ip=' & session.client\_ip%} | Expression | Zur Laufzeit ausgewertet. | 

**Wichtig**  
Ein Wert ist entweder eine vollständige Konstante oder ein vollständiger Ausdruck. Sie können die beiden nicht in einem einzigen Wert mischen. Beispielsweise ist `hello {%'world'%}` nicht gültig. Um statischen Text mit dynamischen Werten zu kombinieren, verwenden Sie die Zeichenkettenverkettung innerhalb des Ausdrucks:. `{%'hello ' & 'world'%}`

## Grundlagen der Sprache
<a name="monetization-functions-jsonata-basics"></a>

### Punktnotation für die Pfadnavigation
<a name="monetization-functions-jsonata-dot-notation"></a>

Verwenden Sie die Punktnotation, um die Eingabedaten zu durchqueren. Jeder Punkt steigt eine Ebene in der Objekthierarchie ab.

```
session.client_ip              → the viewer's IP address
response.body.envelope         → a field inside a parsed JSON response
player_params.campaign_id      → a player parameter
```

Fehlende Felder werden zurückgegeben, `null` ohne dass ein Fehler ausgelöst wird:

```
temp.nonExistent               → null
temp.nonExistent.deeply.nested → null
```

### Verkettung von Zeichenketten mit `&amp;`
<a name="monetization-functions-jsonata-concat"></a>

Der `&` Operator verknüpft zwei Zeichenkettenwerte. Non-string Werte werden automatisch in Zeichenketten umgewandelt.

```
'https://ads.example.com/vast?ip=' & session.client_ip
→ "https://ads.example.com/vast?ip=192.0.2.1"

'duration=' & 30
→ "duration=30"
```

### Bedingte (ternäre) Ausdrücke
<a name="monetization-functions-jsonata-ternary"></a>

Verwenden Sie den ternären Operator, um einen von zwei Werten auf der Grundlage einer Bedingung zurückzugeben.

```
condition ? value_if_true : value_if_false
```

Beispiele:

```
$exists(player_params.env) ? player_params.env : 'prod'
response.statusCode = 200 ? response.body.id : 'unknown'
$random() > 0.5 ? 'groupA' : 'groupB'
```

Sie können ternäre Ausdrücke verschachteln, um eine Verzweigung in mehrere Richtungen zu ermöglichen:

```
$contains(session.user_agent, 'CTV') ? 'ctv'
  : $contains(session.user_agent, 'Mobile') ? 'mobile'
  : 'desktop'
```

### `Variablenbindung mit: =`
<a name="monetization-functions-jsonata-binding"></a>

Verwenden Sie den `:=` Operator in Klammern, um Zwischenwerte innerhalb eines Ausdrucks zuzuweisen. Gebundene Variablen sind auf die umschließenden Klammern beschränkt und bleiben außerhalb des Ausdrucks nicht bestehen.

```
(
  $base := 'https://ads.example.com';
  $base & '/vast?ip=' & session.client_ip
)
```

Semikolons trennen Anweisungen in Klammern voneinander. Die letzte Anweisung ist der Rückgabewert des Ausdrucks.

```
(
  $code := response.statusCode;
  $code != null and $code >= 200 and $code < 300
    ? response.body.value
    : 'fallback'
)
```

## Operatoren
<a name="monetization-functions-jsonata-operators"></a>

### Arithmetisch
<a name="monetization-functions-jsonata-operators-arithmetic"></a>


| Operator | Beschreibung | Beispiel | Ergebnis | 
| --- | --- | --- | --- | 
| \+ | Addition | 5 \+ 3 | 8 | 
| - | Subtraktion | 10 - 4 | 6 | 
| \* | Multiplikation | 6 \* 7 | 42 | 
| / | Division | 15 / 4 | 3.75 | 
| % | Modulo | 17 % 5 | 2 | 

**Wichtig**  
Eingabewerte aus Spielerparametern und Sitzungsdaten kommen als Zeichenketten an. Wird verwendet`$number()`, um sie vor numerischen Vergleichen oder Arithmetik zu konvertieren. Der Vergleich einer Zeichenfolge mit einer Zahl führt zu unerwarteten Ergebnissen.

### Vergleich
<a name="monetization-functions-jsonata-operators-comparison"></a>


| Operator | Beschreibung | Beispiel | Ergebnis | 
| --- | --- | --- | --- | 
| = | gleich | response.statusCode = 200 | true | 
| \!= | Nicht gleich | player\_params.region \!= 'us-east-1' | truewenn nicht us-east-1 | 
| < | Kleiner als | avail.index < 3 | truewenn unter 3 | 
| > | Größer als | $number(player\_params.age) > 18 | truewenn über 18 | 
| <= | Kleiner als oder gleich | $count(items) <= 10 | truewenn 10 oder weniger | 
| >= | Größer als oder gleich | response.statusCode >= 400 | truewenn Fehlerstatus | 

### Boolesch
<a name="monetization-functions-jsonata-operators-boolean"></a>


| Operator | Beschreibung | Beispiel | 
| --- | --- | --- | 
| and | Logisches UND | response.statusCode = 200 and $exists(response.body.id) | 
| or | Logisches ODER | player\_params.region = 'us-east-1' or player\_params.region = 'us-west-2' | 

Verwenden Sie Klammern für den Vorrang:

```
score > 0.5 and (tier = 'premium' or tier = 'gold')
```

**Anmerkung**  
Wird `$not()` für logische Negation verwendet. Es gibt keinen `not` Schlüsselwort-Operator.

### Mitgliedschaft (`in`)
<a name="monetization-functions-jsonata-operators-membership"></a>

Der `in` Operator testet, ob ein Wert in einem Array existiert.

```
'premium' in segments     → true if segments contains 'premium'
player_params.region in ['us-east-1', 'us-west-2']  → true
```

### Verkettung (`~) >`
<a name="monetization-functions-jsonata-operators-chaining"></a>

Der Verkettungsoperator übergibt das Ergebnis des linken Ausdrucks als erstes Argument an die Funktion auf der rechten Seite.

```
session.user_agent ~> $lowercase ~> $trim
→ equivalent to $trim($lowercase(session.user_agent))
```

## Zulässige Funktionen
<a name="monetization-functions-jsonata-allowed"></a>

MediaTailor unterstützt die folgenden integrierten Funktionen. Jede Funktion, die hier nicht aufgeführt ist, ist blockiert und verursacht einen Validierungsfehler, wenn Sie eine Funktion erstellen oder aktualisieren.

### Typkonvertierung (3)
<a name="monetization-functions-jsonata-allowed-type"></a>


| Funktion | Description | Beispiel | Ergebnis | 
| --- | --- | --- | --- | 
| $string(value) | In eine Zeichenfolge umwandeln | $string(200) | "200" | 
| $number(value) | In eine Zahl umwandeln | $number('42') | 42 | 
| $boolean(value) | In einen booleschen Wert umwandeln | $boolean(1) | true | 

### Selbstbeobachtung (4)
<a name="monetization-functions-jsonata-allowed-introspection"></a>


| Funktion | Description | Beispiel | Ergebnis | 
| --- | --- | --- | --- | 
| $length(string) | Länge der Zeichenfolge | $length('hello') | 5 | 
| $count(array) | Anzahl der Array-Elemente | $count([1, 2, 3]) | 3 | 
| $exists(value) | Prüfen Sie, ob ein Wert existiert (nicht undefiniert) | $exists(temp.id) | true oder false | 
| $keys(object) | Ruft Objektschlüsselnamen ab | $keys(response.body) | ["id", "name"] | 

### Numerisch (7)
<a name="monetization-functions-jsonata-allowed-numeric"></a>


| Funktion | Description | Beispiel | Ergebnis | 
| --- | --- | --- | --- | 
| $sum(array) | Summe des Arrays | $sum([1, 2, 3]) | 6 | 
| $max(array) | Maximaler Wert | $max([10, 5, 20]) | 20 | 
| $min(array) | Mindestwert | $min([10, 5, 20]) | 5 | 
| $average(array) | Arithmetisches Mittel | $average([10, 20, 30]) | 20 | 
| $abs(number) | Absoluter Wert | $abs(-7) | 7 | 
| $floor(number) | Abrunden | $floor(3.9) | 3 | 
| $round(number, precision) | Präzise abrunden | $round(3.456, 2) | 3.46 | 

### Schnur (7)
<a name="monetization-functions-jsonata-allowed-string"></a>


| Funktion | Description | Beispiel | Ergebnis | 
| --- | --- | --- | --- | 
| $uppercase(string) | In Großbuchstaben | $uppercase('hello') | "HELLO" | 
| $lowercase(string) | In Kleinbuchstaben | $lowercase('Hello') | "hello" | 
| $trim(string) | Leerzeichen entfernen leading/trailing  | $trim(' hi ') | "hi" | 
| $substring(string, start, length) | Extrahieren Sie eine Teilzeichenfolge (auf Null basierend) | $substring('abcdef', 2, 3) | "cde" | 
| $contains(string, pattern) | Prüfen Sie, ob die Zeichenfolge ein Muster enthält | $contains(session.user\_agent, 'CTV') | true oder false | 
| $match(string, pattern) | Ordne die Zeichenfolge dem Regex-Muster zu | $match('abc-123', /[0-9]\+/) | {"match": "123", ...} | 
| $replace(string, pattern, replacement) | Ersetze das passende Muster | $replace('hello', 'l', 'r') | "herro" | 

### Reihe (5)
<a name="monetization-functions-jsonata-allowed-array"></a>


| Funktion | Description | Beispiel | Ergebnis | 
| --- | --- | --- | --- | 
| $append(arr1, arr2) | Arrays verketten | $append([1, 2], [3, 4]) | [1, 2, 3, 4] | 
| $reverse(array) | Reihenfolge umkehren | $reverse([1, 2, 3]) | [3, 2, 1] | 
| $sort(array) | Array sortieren | $sort([3, 1, 2]) | [1, 2, 3] | 
| $distinct(array) | Entfernen von Duplizierungen | $distinct([1, 2, 2, 3]) | [1, 2, 3] | 
| $map(array, func) | Wenden Sie die Funktion auf jedes Element an | $map([1,2,3], function($v){$v\*2}) | [2, 4, 6] | 

### Boolescher Wert (1)
<a name="monetization-functions-jsonata-allowed-boolean"></a>


| Funktion | Description | Beispiel | Ergebnis | 
| --- | --- | --- | --- | 
| $not(value) | Logisch NICHT | $not(false) | true | 

### Zufällig (1)
<a name="monetization-functions-jsonata-allowed-random"></a>


| Funktion | Description | Beispiel | Ergebnis | 
| --- | --- | --- | --- | 
| $random() | Zufallszahl zwischen 0 (inklusive) und 1 (exklusiv) | $random() > 0.5 ? 'A' : 'B' | "A" oder "B" | 

**Anmerkung**  
`$random()`generiert bei jeder Auswertung einen neuen Wert. Wenn Sie denselben Zufallswert in mehreren Ausgabeschlüsseln benötigen, binden Sie ihn zuerst an eine Variable:`($r := $random(); ...)`.

### Date/time (4)
<a name="monetization-functions-jsonata-allowed-datetime"></a>


| Funktion | Description | Beispiel | Ergebnis | 
| --- | --- | --- | --- | 
| $now() | Aktueller Zeitstempel als ISO-8601-Zeichenfolge | $now() | "2024-01-15T12:00:00.000Z" | 
| $millis() | Aktueller Zeitstempel in Millisekunden seit der Epoche | $millis() | 1705320000000 | 
| $toMillis(string) | Konvertiert die ISO 8601-Zeichenfolge in Millisekunden | $toMillis('2024-01-15T12:00:00.000Z') | 1705320000000 | 
| $fromMillis(number) | Konvertiert Millisekunden in eine ISO-8601-Zeichenfolge | $fromMillis(1705320000000) | "2024-01-15T12:00:00.000Z" | 

### Kodierung (6)
<a name="monetization-functions-jsonata-allowed-encoding"></a>


| Funktion | Description | Beispiel | 
| --- | --- | --- | 
| $encodeUrl(string) | URL-Kodierung (behält Strukturzeichen wie/,, ? bei) & | $encodeUrl('https://example.com/path?q=hello world') | 
| $encodeUrlComponent(string) | URL-Kodierung einer einzelnen Komponente (kodiert alle Sonderzeichen) | $encodeUrlComponent('a&b=c') → "a%26b%3Dc" | 
| $decodeUrl(string) | Dekodieren Sie eine Zeichenfolge URL-encoded  | $decodeUrl('hello%20world') → "hello world" | 
| $decodeUrlComponent(string) | Dekodieren Sie eine Komponente URL-encoded  | $decodeUrlComponent('a%26b') → "a&b" | 
| $base64encode(string) | Auf Base64 codieren | $base64encode('hello') → "aGVsbG8=" | 
| $base64decode(string) | Von Base64 dekodieren | $base64decode('aGVsbG8=') → "hello" | 

**Tipp**  
Wird `$encodeUrlComponent()` für einzelne Abfrageparameterwerte verwendet. Verwenden Sie diese Option `$encodeUrl()` nur, wenn Sie eine vollständige URL unter Beibehaltung ihrer Struktur kodieren müssen.

## Allgemeine Muster
<a name="monetization-functions-jsonata-patterns"></a>

### Ausweichwerte
<a name="monetization-functions-jsonata-patterns-fallback"></a>

Geben Sie einen Standardwert an, wenn ein Wert möglicherweise nicht existiert.

```
{%$exists(player_params.region) ? player_params.region : 'us-east-1'%}
```

### Dynamische URL-Konstruktion
<a name="monetization-functions-jsonata-patterns-url"></a>

Erstellen Sie eine URL für einen Anzeigenentscheidungsserver aus mehreren Eingaben.

```
{%'https://ads.example.com/v1/vast?ip=' & $encodeUrlComponent(session.client_ip) & '&ua=' & $encodeUrlComponent(session.user_agent) & '&sid=' & session.id%}
```

### Der Statuscode überprüft die HTTP\_REQUEST-Ausgabe
<a name="monetization-functions-jsonata-patterns-status"></a>

Schützt Ausgabewerte vor HTTP-Fehlern.

```
{%response.statusCode != null and response.statusCode = 200 ? response.body.envelope : 'default-envelope'%}
```

### Numerische Konvertierung von Player-Parametern
<a name="monetization-functions-jsonata-patterns-numeric"></a>

Spielerparameter kommen als Zeichenketten an. Konvertiert sie vor arithmetischen oder numerischen Vergleichen.

```
{%$number(player_params.max_duration) > 30 ? 'long' : 'short'%}
```

**Wichtig**  
Wenn eine nicht numerische Zeichenfolge `$number()` empfangen wird, wird sie zurückgegeben. `undefined` Kombinieren Sie es mit `$exists()` dem Fall, dass der Parameter möglicherweise fehlt oder ungültig ist:`($val := $number(player_params.max_duration); $exists($val) and $val > 30 ? 'long' : 'short')`.

### Zufällige Aufteilung des Datenverkehrs
<a name="monetization-functions-jsonata-patterns-random"></a>

Weisen Sie Zuschauern Versuchsgruppen zu mithilfe von`$random()`.

```
{%$random() > 0.5 ? 'https://ads.example.com/v1/vast-a' : 'https://ads.example.com/v1/vast-b'%}
```

### Klassifizierung des Gerätetyps
<a name="monetization-functions-jsonata-patterns-device"></a>

Klassifizieren Sie Geräte anhand der Benutzeragent-Zeichenfolge.

```
{%$contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop'%}
```