JSON_TO_PROCESS

Die Script-Funktion JSON_TO_PROCESS wird verwendet, um JSON-Werte in einer internen Liste (Prozess) für die weitere Verarbeitung zu speichern (z. B. Iteration über Elemente).

Syntax

JSON_TO_PROCESS (JSON, JSONPath [,MODE])

Parameter

  • JSON
    Ein String oder eine Variable, die ein gültiges JSON-Dokument enthalten

  • JSONPath
    Ein gültiger JSONPath-Ausdruck, der die zu speichernden Werte identifiziert.

  • MODE
    VALUE (Standard), PATH oder KEYS
    Extrahiert den Wert, der mit dem JSONPath-Ausdruck übereinstimmt (VALUE), den absoluten JSONPath zu diesem Wert (PATH) oder die Schlüssel eines JSON-Objekts (KEYS).

    Tipp: Wenn MODE auf PATH gesetzt ist, speichert die Funktion nicht den übereinstimmenden Funktionswert, sondern seinen absoluten JSONPath. Dieser Pfad kann verwendet werden, um den Wert später zu ändern (siehe nachstehende Beispiele).

Hinweise:

  • Verwenden Sie diese Funktion, wenn Sie auf ein Array mit JSON-Werten zugreifen müssen, da JSON_GET_VALUE nur auf einzelne (primitive) Werte zugreifen kann.
  • Die Datensequenz erstellt eine Zeile für jeden ausgewählten Wert

Rückgabewert

Die Script-Funktion speichert Werte aus einem JSON-Dokument, das mit einem JSONPath-Ausdruck in einer Datensequenz (interne Liste) übereinstimmt. Der Verweis auf die erzeugte Datensequenz wird als Rückgabewert zurückgegeben.

Laufzeitfehler

JSON_TO_PROCESS schlägt mit einem Laufzeitfehler unter den folgenden Bedingungen fehl:

  • 45334

    Wenn Ihr JSON-Dokument ungültig ist
  • 45342
    Syntaxfehler im JSONPath-Ausdruck
  • 45347
    Ungültiger Modus-Parameter: Wert, Pfad oder Schlüssel erwartet
  • 45350
    Im Modus KEYS muss der JSONPath ein Objekt auswählen

Beispiele:

Dieses Beispiel verwendet die Script-Funktion, um die in der JSON-Struktur enthaltenen Host-IP-Adressen auszugeben.

:SET &JSON_DOC# = '[{"host":"192.168.0.10","active":true},{"host":"192.168.0.20","active":false},{"host":"192.168.0.29","active":true}]'
:SET &HND# = JSON_TO_PROCESS(&JSON_DOC#, '$..host' )
:PROCESS &HND#
:SET &HOST_IP# = GET_PROCESS_LINE(&HND#)
:PRINT "&HOST_IP#"
:ENDPROCESS

Ergebnis des Aktivierungsreports

U00020408 192.168.0.10
U00020408 192.168.0.20
U00020408 192.168.0.29

Iterieren Sie über alle Schlüssel und Werte eines JSON-Objekts mit dem Modus KEYS:

:SET &JSON_DOC# = '{"serverConfig": {"OS":"Linux","Cores":8,"RAM": 16, "DiskType":"SSD","DiskSpace":512}}'
:SET &OBJPATH# = '$.serverConfig'

! Zuerst rufen wir alle Schlüssel des serverConfig-Objekts unter Verwendung des Modus "KEYS" ab, d. h. "OS", "Cores",...

:SET &KEYS# = JSON_TO_PROCESS(&JSON_DOC#,&OBJPATH# ,"KEYS")
:PROCESS &KEYS#
:SET &KEY# = GET_PROCESS_LINE(&KEYS#)

! Jetzt rufen wir den Wert für diesen Schlüssel ab, indem wir den Objektpfad und den Schlüsselnamen verknüpfen

:SET &VALUE# = JSON_GET_VALUE(&JSON_DOC#,'&OBJPATH#.&KEY#')
:P '&KEY#:&VALUE#'
:ENDPROCESS

Ergebnis des Aktivierungsreports

U00020408 OS:Linux
U00020408 Cores:8
U00020408 RAM:16
U00020408 DiskType:SSD
U00020408 DiskSpace:512

Setzen Sie alle Werte der aktiven Eigenschaft auf true. Wählen Sie dazu die JSONPaths aller aktiven Eigenschaften aus, und verwenden Sie dann JSON_SET_VALUE, um diese Pfade auf true zu ändern.

:SET &JSON_DOC# = '[{"host":"192.168.0.10","active":false},{"host":"192.168.0.20","active":false},{"host":"192.168.0.29","active": true}]'
:SET &HND# = JSON_TO_PROCESS(&JSON_DOC#, '$..active', "PATH" )
:PROCESS &HND#
: SET &STATUS_PATH# = GET_PROCESS_LINE(&HND#)
: SET &RET# = JSON_SET_VALUE(&JSON_DOC#, &STATUS_PATH#, 'true')
:ENDPROCESS
:PRINT &JSON_DOC#

Ergebnis des Aktivierungsreports

U00020408 [{"host":"192.168.0.10","active":"true"},{"host":"192.168.0.20","active":"true"},{"host":"192.168.0.29","active":"true"}]

Siehe auch: